วิธีการอัพโหลดไฟล์ CSV ที่มีประสิทธิภาพ

ฉันกำลังอัปโหลดเนื้อหาไฟล์ CSV ไปยังฐานข้อมูล mySQL ฉันไม่แน่ใจว่าแนวทางใดดีที่สุด & มีประสิทธิภาพ & ดี

1] การใช้คำสั่ง LOAD DATA INFILE SQL

LOAD DATA LOCAL INFILE '/importfile.csv'
INTO TABLE test_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(field1, filed2, field3); 

2] การใช้สคริปต์เพื่อแยกวิเคราะห์และนำเข้าไฟล์เช่น ฟังก์ชัน fgetcsv() ใน php.ini


person JMohasin    schedule 14.03.2012    source แหล่งที่มา
comment
วิธีเดียวที่จะบอกได้อย่างแน่นอนคือการเปรียบเทียบทั้งสองอย่าง แต่เงินของฉันอยู่ที่ LOAD DATA LOCAL INFILE แน่นอนที่สุดเพื่อความรวดเร็วและความสะดวกในการใช้งาน   -  person Michael Berkowski    schedule 14.03.2012
comment
เมื่อใช้ fgetcsv() คุณจะต้องเรียกใช้คำสั่ง INSERT หลายคำสั่ง หรือเขียนโค้ดจำนวนมากเพื่อสร้างคำสั่ง INSERT ที่ยาวมากเพียงคำสั่งเดียวด้วยสายโซ่ VALUES (),(),(),(),()... การนำเข้า CSV ดั้งเดิมใน MySQL จะง่ายกว่ามาก   -  person Michael Berkowski    schedule 14.03.2012


คำตอบ (4)


หากคุณมั่นใจในเนื้อหาของ CVS ให้ใช้วิธีที่ 1

แต่หากคุณไม่แน่ใจ คุณอาจต้องการให้สคริปต์ตรวจสอบเนื้อหาของไฟล์ ในกรณีนี้ให้ใช้วิธีที่ 2

person Ed Heal    schedule 14.03.2012

การโหลดลงในฐานข้อมูลโดยตรงมีแนวโน้มที่จะมีประสิทธิภาพมากกว่าการใช้สคริปต์ คุณไม่มีค่าใช้จ่ายในการเรียกใช้สคริปต์ การอ่าน/การแยกวิเคราะห์ การรวบรวมคำถามเข้าด้วยกัน ฯลฯ คุณเพียงแค่ย้ายข้อมูลไปด้านบน

หากคุณต้องการทำสิ่งนี้ด้วยตนเอง 100 ครั้งต่อวัน คุณจะต้องการสิ่งที่เป็นอัตโนมัติมากขึ้น เช่น สคริปต์ จากนั้นคุณต้องพิจารณาประสิทธิภาพส่วนบุคคลและระดับความพยายามของคุณ

person Surreal Dreams    schedule 14.03.2012

เหตุผลเดียวที่จะไม่ใช้ LOAD DATA INFILE SQL คือถ้าคุณจะประมวลผลข้อมูลบางส่วนจากที่ใด เช่น ถ้าต้องแปลงหรือรวมข้อมูลก่อนจะแทรก แต่ถ้าเป็นการนำเข้าโดยตรง นี่จะถือว่าเร็วที่สุด

person Iznogood    schedule 14.03.2012

โดยส่วนตัวแล้วฉันชอบ LOAD DATA INFILE เพราะการโหลดตามสคริปต์มักจะใช้คำสั่ง insert หลายคำสั่ง หากคุณต้องการแก้ไข CSV การใช้สคริปต์จะง่ายกว่ามาก แต่จากประสบการณ์ของฉัน LOAD DATA INFILE นั้นเร็วกว่า

person JKirchartz    schedule 14.03.2012