Informix LOAD FROM ไฟล์พร้อมส่วนหัว

ฉันใช้คำสั่ง Informix LOAD FROM เพื่อแทรกข้อมูลจากไฟล์ CSV ลงในตาราง DB จำนวนมาก เช่น:

LOAD FROM "file.csv" DELIMITER ";" INSERT INTO table_name(col1, col2, col3)

ปัญหาคือ บรรทัดแรกของไฟล์ CSV แต่ละไฟล์มีส่วนหัวของคอลัมน์ มีวิธีใดบ้างที่จะบอก Informix ว่าแถวแรกจะถูกละเว้น?


person andreask    schedule 12.02.2015    source แหล่งที่มา


คำตอบ (2)


เลขที่; ไม่มีวิธีบอกมาตรฐาน Informix คำสั่ง LOAD เพื่อข้ามบรรทัดส่วนหัว โปรดทราบว่าจะไม่ลบเครื่องหมายคำพูดออกจากช่องต่างๆ ในรูปแบบ CSV และจัดการกับสิ่งที่รูปแบบ CSV คาดหวังอย่างเป็นทางการ (แต่เนื่องจากคุณมีค่าที่คั่นด้วยเครื่องหมายอัฒภาค แทนที่จะเป็นค่าที่คั่นด้วยเครื่องหมายจุลภาค จึงเป็นเรื่องยากที่จะทราบ มีการปฏิบัติตามกฎเกณฑ์ใด - จงระวังการปฏิบัติต่อแบ็กสแลชด้วย)

คุณอาจสามารถใช้ยูทิลิตี Informix DB-Load (dbload) แทน; ขึ้นอยู่กับว่าข้อมูลของคุณใช้ ; แทนตัวคั่นเริ่มต้น | ของ Informix หรือไม่ หรือว่าคุณมีความหมาย CSV มากกว่า เช่น เครื่องหมายคำพูดรอบฟิลด์ที่ต้องลบออก หากคุณต้องการแปลกใหม่ Informix ตัวโหลดประสิทธิภาพสูง (HPL) สามารถจัดการได้เองหรือได้รับการฝึกให้จัดการก็ได้

หรือคุณสามารถพิจารณาใช้* SQLCMD โปรแกรม (ถูกเรียกว่า sqlcmd ยาวกว่าชื่อเดียวกันของ Microsoft johnny-come-lately มาก) ซึ่งช่วยให้คุณระบุ:

LOAD FROM "file.csv" DELIMITER ";" SKIP 1 INSERT INTO table_name(col1, col2, col3);

SQLCMD ยังมีตัวเลือก FORMAT CSV (ท่ามกลางรูปแบบอื่นๆ) ที่อาจเกี่ยวข้องหรือไม่เกี่ยวข้องก็ได้ โดยจะจัดการสิ่งต่างๆ เช่น การดึงเครื่องหมายคำพูดออกจากช่องต่างๆ ที่มาตรฐาน CSV เต็มรูปแบบรองรับ

คุณจะต้องติดตั้ง Informix ClientSDK และคอมไพเลอร์ C (และส่วนที่เหลือของระบบการพัฒนา C) เพื่อสร้าง SQLCMD

* เนื่องจาก SQLCMD เป็นโปรแกรมของฉันเพราะฉันเขียนมันขึ้นมา คำแนะนำใดๆ ที่จะใช้มันจึงมีอคติโดยเนื้อแท้ คุณได้รับคำเตือนแล้ว


คุณยังสามารถพิจารณา 'ตารางภายนอก' (สร้างตารางภายนอก) แต่ฉันไม่แน่ใจว่าจะดีกว่าคำสั่ง LOAD ที่มีรูปแบบที่รองรับหรือมีความสามารถในการข้ามแถวแรกของข้อมูลหรือไม่

person Jonathan Leffler    schedule 12.02.2015
comment
ขอขอบคุณสำหรับการชี้แจง! ไฟล์ที่ฉันใช้นั้นไม่เป็นไปตามรูปแบบ CSV มาตรฐานจริงๆ แต่เนื่องจากไฟล์เหล่านั้นจะมีเพียงตัวเลขและวันที่เพียงไม่กี่วัน ฉันจึงไม่ต้องกังวลกับปัญหาด้านรูปแบบ อย่างไรก็ตาม ฉันจะดู SQLCMD อย่างแน่นอน ขอบคุณสำหรับคำใบ้! - person andreask; 12.02.2015

เมื่อฉันโหลดไฟล์ CSV โดยใช้ LOAD FROM ลงใน Informix ฉันมักจะโหลดไปที่ตารางชั่วคราวซึ่งเป็นคอลัมน์อักขระทั้งหมดที่ฉันใช้งาน คุณเพียงแค่ลบแถวส่วนหัว โดยพื้นฐานแล้วคุณเพียงแค่ใส่ไฟล์ทั้งหมดลงในตารางชั่วคราวซึ่งง่ายต่อการทำงานด้วย

person SupermanKelly    schedule 20.01.2017