วิธีการนำเข้าไฟล์ excel ไปยังฐานข้อมูล MySQL


90

ใครสามารถอธิบายวิธีการนำเข้าไฟล์ Microsoft Excel ไปยังฐานข้อมูล MySQL ได้หรือไม่?

ตัวอย่างเช่นตาราง Excel ของฉันมีลักษณะดังนี้:

Country   |   Amount   |   Qty
----------------------------------
America   |   93       |   0.60

Greece    |   9377     |   0.80

Australia |   9375     |   0.80

[คุณสามารถดูหัวข้อนี้] [1] ในฟอรัม MySQL อธิบายวิธีการทำสิ่งที่คุณต้องการ [1]: forums.mysql.com/read.php?32,216343,216344#msg-216344
Kredns

1
ยูทิลิตี้ฟรีนี้ทำให้การนำเข้าสเปรดชีต excel ไปยังตาราง mysql ได้ง่ายและรวดเร็วpanofish.net/…
panofish

+1 สำหรับแนวคิดใหม่และแตกต่าง การประมวลผลช้ามากโดยจะอ่านแต่ละแถวในไฟล์ก่อนแล้วจึงอัปโหลดอะไรก็ได้ ใช้เวลาประมาณ 15 นาทีในการนำเข้า 5.2K แถว
Fr0zenFyr

สำหรับสเปรดชีตบางรายการอาจทำงานช้าเนื่องจากจำนวนคอลัมน์และแถว แต่ฉันตำหนิ microsofts com-object library ซึ่งเป็นสิ่งที่ใช้ในการอ่านสเปรดชีต โปรแกรมของฉันอ่านสเปรดชีตเร็วที่สุดเท่าที่ไลบรารีจะอนุญาต เม็ดมีด mysql นั้นเร็วมาก หากคุณสามารถกำจัดคอลัมน์ที่ไม่จำเป็นก่อนนำเข้า ... นั่นสามารถช่วยได้
panofish

ฉันมี 14 คอลัมน์ใน 5173 แถว ฉันได้เลือกคอลัมน์ / แถวว่างทั้งหมดแล้วและลบออกเพื่อหลีกเลี่ยงการประมวลผลที่ไม่จำเป็น Sytem ที่ฉันใช้มีแรม 2.5G และโปรเซสเซอร์ core2duo ไม่มีกระบวนการทำงานมากมายแท็บประสิทธิภาพแสดงการใช้งาน 65% ในทั้งหมดและ RAM จำนวนมากยังไม่ได้ใช้ ดังนั้นฉันเดาว่าฉันจะไม่โทษฮาร์ดแวร์ แต่อย่างที่คุณบอกว่า MS com object ห่วย .. ฉันไม่รู้ว่าเมื่อไร MS จะหยุดสร้างอึที่ดูเหมือนช่วยชีวิตสำหรับมือใหม่ ฉันเบื่อที่จะทำอึพิเศษสำหรับผลิตภัณฑ์ MS
Fr0zenFyr

คำตอบ:


46
  1. ส่งออกเป็นรูปแบบข้อความบางส่วน วิธีที่ง่ายที่สุดอาจเป็นเวอร์ชันที่คั่นด้วยแท็บ แต่ CSV ก็สามารถทำงานได้เช่นกัน

  2. ใช้ความสามารถในการโหลดข้อมูล ดูhttp://dev.mysql.com/doc/refman/5.1/en/load-data.html

  3. มองลงไปครึ่งหนึ่งของหน้าเนื่องจากจะเป็นตัวอย่างที่ดีสำหรับข้อมูลที่คั่นด้วยแท็บ:

    ฟิลด์ที่ถูกระงับโดย '\ t' รวมอยู่ด้วย '' หลบหนีโดย '\'

  4. ตรวจสอบข้อมูลของคุณ บางครั้งการอ้างหรือการหลีกเลี่ยงมีปัญหาและคุณจำเป็นต้องปรับซอร์สของคุณคำสั่งนำเข้า - หรืออาจจะง่ายกว่าในการโพสต์กระบวนการผ่าน SQL


2
เมื่อส่งออกเป็น CSV [อย่างน้อย] excel 2013 พยายามอย่างมากที่จะทำให้ข้อมูลเป็นพิษโดยใช้คำสั่งคู่ที่หลีกเลี่ยง VBA โดยใช้ตัวคั่นทศนิยมที่ขึ้นอยู่กับสถานที่ (ตามการตั้งค่าภูมิภาคของ OS) สำหรับ 0 ค่า (เช่น "," ในขณะที่ใช้ "ตามที่กำหนด ในตัวคั่นคุณสมบัติของเซลล์สำหรับค่าอื่น ๆ ทั้งหมดควรอยู่ห่างจาก CSV
afk5 นาที

1
โปรดทราบว่าขั้นตอนนี้กำหนดให้คุณต้องสร้างตารางโดยใช้ฟิลด์ที่เหมาะสมก่อน
LarsH

นั่นไม่ใช่ปัญหาเดียว ฉันไม่แน่ใจว่าขั้นตอนนี้เกี่ยวข้องกับการคืนค่าขนส่งภายในเซลล์ใน excel อย่างถูกต้องหรือไม่ แม้แต่การนำเข้าจาก csv ไปยัง excel ก็ล้มเหลว
Raul Luna

1
@ afk5min "ข้อมูลพิษ" หมายความว่าอย่างไร ??? แท็กและมาร์กอัปทั้งหมดมีประโยชน์มากสำหรับผู้ใช้ที่กำลังจะนำเข้าสิ่งนั้นไปยังผลิตภัณฑ์ MS อื่นอย่างเห็นได้ชัด ...
Mindwin

1
* คุณหมายถึง "วิธีที่ยากที่สุด" ไม่ใช่วิธีที่ง่ายที่สุด
ย้อนกลับ

105

มีเครื่องมือออนไลน์ง่ายๆที่สามารถทำเช่นนี้เรียกว่าเป็นsqlizer.io

ภาพหน้าจอจาก sqlizer.com

คุณอัปโหลดไฟล์ XLSX ลงในไฟล์ป้อนชื่อชีตและช่วงเซลล์จากนั้นจะสร้างคำสั่ง CREATE TABLE และคำสั่ง INSERT จำนวนมากเพื่อนำเข้าข้อมูลทั้งหมดของคุณไปยังฐานข้อมูล MySQL

(คำเตือน: ฉันช่วยเรียกใช้ SQLizer)


23
น่ารู้ว่ามีเครื่องมือนี้อยู่ แต่ควรคิดให้ดีว่าควรใช้หรือไม่ หากสเปรดชีตของคุณมีข้อมูลที่ละเอียดอ่อน (เช่นอีเมลผู้ใช้รหัสผ่านข้อมูลซีซีข้อมูลทางการแพทย์ ฯลฯ ) อาจไม่ใช่ความคิดที่ดี ไซต์นี้อาจไม่จัดเก็บข้อมูลของคุณและอาจปลอดภัย แต่ไม่มีทางที่คุณจะรู้ได้อย่างแน่นอน
Chris Schmitz

1
@DivyeshJesadiya ได้ฟรีทุกอย่างมากถึง 5,000 แถว หลังจากนั้นคุณต้องจ่าย $ 10 สำหรับการใช้งานหนึ่งเดือน
d4nt

@doxsi ดูเหมือนจะดีสำหรับฉันคุณมีปัญหาอะไรกับมัน?
d4nt

@ChrisSchmitz เราระมัดระวังเรื่องความปลอดภัยเป็นอย่างยิ่งและได้เขียนบล็อกโพสต์เมื่อเร็ว ๆ นี้เกี่ยวกับวิธีที่เราใช้งาน SQLizer blog.sqlizer.io/posts/privacy-at-sqlizer
a_good_swan

ใช้งานได้ให้ความสนใจกับรูปแบบ Excel ไม่ยอมรับ xlt ในขณะที่ยอมรับ xls
Emanuel Pirovano

42

ด้านล่างนี้เป็นอีกวิธีหนึ่งในการนำเข้าข้อมูลสเปรดชีตไปยังฐานข้อมูล MySQL ที่ไม่ต้องพึ่งพาซอฟต์แวร์เพิ่มเติมใด ๆ สมมติว่าคุณต้องการที่จะนำเข้าตาราง Excel ของคุณลงในsalesตารางของฐานข้อมูล MySQL mydatabaseที่ชื่อว่า

  1. เลือกเซลล์ที่เกี่ยวข้อง:

    ใส่คำอธิบายภาพที่นี่

  2. วางลงในMr. Data Converterและเลือกผลลัพธ์เป็น MySQL:

    ใส่คำอธิบายภาพที่นี่

  3. เปลี่ยนชื่อตารางและคำจำกัดความของคอลัมน์ให้เหมาะกับความต้องการของคุณในผลลัพธ์ที่สร้างขึ้น:

CREATE TABLE sales (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  Country VARCHAR(255),
  Amount INT,
  Qty FLOAT
);
INSERT INTO sales
  (Country,Amount,Qty)
VALUES
  ('America',93,0.60),
  ('Greece',9377,0.80),
  ('Australia',9375,0.80);
  1. หากคุณใช้MySQL Workbenchหรือล็อกอินmysqlจากบรรทัดคำสั่งแล้วคุณสามารถเรียกใช้คำสั่ง SQL ที่สร้างขึ้นจากขั้นตอนที่ 3 ได้โดยตรง มิฉะนั้นวางโค้ดลงในไฟล์ข้อความ (เช่นimport.sql) และดำเนินการคำสั่งนี้จาก Unix shell:

    mysql mydatabase < import.sql

    วิธีอื่น ๆ ในการนำเข้าจากไฟล์ SQL สามารถพบได้ในคำตอบ Stack Overflowนี้


1
นี่เป็นวิธีที่ง่ายที่สุด ขอบคุณ! อย่าลืมลบคีย์หลัก 'ID' พิเศษใน SQL และเพิ่มค่าอัตโนมัติที่คุณเลือก
Fandango68

29

มีหลายวิธีในการนำเข้าไฟล์ excel ไปยังฐานข้อมูล MySQL ที่มีระดับความซับซ้อนและความสำเร็จที่แตกต่างกัน

  1. Excel2MySQL ลงมือทำวิธีที่ง่ายและเร็วที่สุดในการนำเข้าข้อมูล Excel ไปยัง MySQL รองรับ Excel ทุกเวอร์ชันและไม่ต้องติดตั้ง Office

    ภาพหน้าจอของ Excel2MySQL

  2. โหลดข้อมูลข้อมูล : ตัวเลือกยอดนิยมนี้อาจเป็นทางเทคนิคมากที่สุดและต้องมีความเข้าใจในการดำเนินการคำสั่ง MySQL คุณต้องสร้างตารางของคุณด้วยตนเองก่อนที่จะโหลดและใช้ประเภทฟิลด์ VARCHAR ที่มีขนาดเหมาะสม ดังนั้นประเภทข้อมูลฟิลด์ของคุณจึงไม่ได้รับการปรับให้เหมาะสม LOAD DATA INFILE มีปัญหาในการนำเข้าไฟล์ขนาดใหญ่ที่เกินขนาด "max_allowed_packet" ต้องให้ความสนใจเป็นพิเศษเพื่อหลีกเลี่ยงปัญหาในการนำเข้าอักขระพิเศษและอักขระ Unicode ต่างประเทศ นี่คือตัวอย่างล่าสุดที่ฉันใช้ในการนำเข้าไฟล์ csv ชื่อ test.csv

    ใส่คำอธิบายภาพที่นี่

  3. phpMyAdmin : เลือกฐานข้อมูลของคุณก่อนจากนั้นเลือกแท็บนำเข้า phpMyAdmin จะสร้างตารางของคุณโดยอัตโนมัติและปรับขนาดฟิลด์ VARCHAR ของคุณ แต่จะไม่ปรับประเภทฟิลด์ให้เหมาะสม phpMyAdmin มีปัญหาในการนำเข้าไฟล์ขนาดใหญ่ที่มีขนาดเกิน 'max_allowed_packet'

    ใส่คำอธิบายภาพที่นี่

  4. MySQL สำหรับ Excel : นี่คือ Add-in ของ Excel ฟรีจาก Oracle ตัวเลือกนี้ค่อนข้างน่าเบื่อเพราะใช้วิซาร์ดและการนำเข้าช้าและมีปัญหากับไฟล์ขนาดใหญ่ แต่อาจเป็นตัวเลือกที่ดีสำหรับไฟล์ขนาดเล็กที่มีข้อมูล VARCHAR ช่องไม่ได้รับการปรับให้เหมาะสม

    ใส่คำอธิบายภาพที่นี่


สวัสดี @panofish ฉันมี excel ที่อัพเดททุกวัน ฉันต้องการนำเฉพาะข้อมูลที่อัปเดตไปใส่ในตารางฐานข้อมูล mysql แทนทั้งตาราง (เช่น) ใส่หนึ่งแถวลงในตารางต่อวัน จะทำได้อย่างไร?
อรุณราชา

โซลูชันเหล่านี้มุ่งเน้นไปที่การโหลดสเปรดชีตทั้งหมดและแทนที่ตาราง MySQL ของคุณหรือต่อท้ายตาราง มีการเปลี่ยนแปลงเพิ่มระเบียนใหม่หรือเปลี่ยนแปลงระเบียนที่มีอยู่หรือไม่
panofish

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

2
เครื่องมือ Excel2MySQL ควรมีความเป็นไปได้ในการสร้างสคริปต์ฐานข้อมูลเท่านั้น :(
joseantgv

PHPMyAdmin เป็นวิธีที่ง่ายและรวดเร็วที่สุด
Amir Hajiha

2

ไม่แน่ใจว่าคุณมีการตั้งค่าทั้งหมดนี้หรือไม่ แต่สำหรับฉันฉันใช้ PHP และ MYSQL ดังนั้นฉันใช้ PHP คลาส PHPExcel สิ่งนี้ใช้ไฟล์ได้เกือบทุกรูปแบบ xls, xlsx, cvs, ... จากนั้นให้คุณอ่านและ / หรือแทรก

ดังนั้นสิ่งที่ฉันทำคือการโหลด excel ในวัตถุ phpexcel แล้ววนซ้ำทุกแถว จากสิ่งที่ฉันต้องการฉันเขียนคำสั่งแทรก SQL ง่ายๆเพื่อแทรกข้อมูลในไฟล์ excel ลงในตารางของฉัน

ในส่วนหน้ามันใช้งานได้เล็กน้อย แต่เป็นเพียงเรื่องของการปรับแต่งตัวอย่างโค้ดที่มีอยู่ แต่เมื่อคุณหมุนหมายเลขในการเปลี่ยนแปลงการนำเข้านั้นทำได้ง่ายและรวดเร็ว


1

วิธีที่ดีที่สุดและง่ายที่สุดคือใช้แอป "MySQL for Excel" ซึ่งเป็นแอปฟรีจาก oracle แอพนี้เพิ่มปลั๊กอินให้กับ excel เพื่อส่งออกและนำเข้าข้อมูลไปยัง mysql คุณสามารถดาวน์โหลดได้จากที่นี่


1

เมื่อใช้ไฟล์ข้อความเพื่อนำเข้าข้อมูลฉันมีปัญหากับเครื่องหมายคำพูดและวิธีที่ Excel จัดรูปแบบตัวเลข ตัวอย่างเช่นการกำหนดค่า Excel ของฉันใช้ลูกน้ำเป็นตัวคั่นทศนิยมแทนจุด

ตอนนี้ฉันใช้ Microsoft Access 2010 เพื่อเปิดตาราง MySql เป็นตารางที่เชื่อมโยง ฉันสามารถคัดลอกและวางเซลล์จาก Excel ไปยัง Access ได้ที่นั่น

การทำเช่นนี้เป็นครั้งแรกที่ติดตั้งไดรเวอร์ MySql ODBCและสร้างการเชื่อมต่อ ODBC จากนั้นในการเข้าถึงในแท็บ "ข้อมูลภายนอก" ให้เปิดกล่องโต้ตอบ "ฐานข้อมูล ODBC" และลิงก์ไปยังตารางใดก็ได้โดยใช้การเชื่อมต่อ ODBC

เมื่อใช้MySql Workbenchคุณยังสามารถคัดลอกและวางข้อมูล Excel ของคุณลงในตารางผลลัพธ์ของ MySql Workbench ฉันให้คำแนะนำโดยละเอียดในคำตอบนี้


0

สำหรับตัวอย่างทีละขั้นตอนสำหรับการนำเข้า Excel 2007 ไปยัง MySQL ด้วยการเข้ารหัสที่ถูกต้อง (UTF-8) ให้ค้นหาความคิดเห็นนี้:

"โพสต์โดย Mike Laird เมื่อ 13 ตุลาคม 2010 00:50 น."

ใน URL ถัดไป:

http://dev.mysql.com/doc/refman/5.1/th/load-data.html


0

คุณสามารถใช้DocChowซึ่งเป็น GIU ที่ใช้งานง่ายมากสำหรับการนำเข้า Excel ไปยัง MySQL และฟรีบนแพลตฟอร์มทั่วไป (รวมถึง Linux)

โดยเฉพาะอย่างยิ่งหากคุณกังวลเกี่ยวกับวันที่ประเภทข้อมูลวันที่และ เวลา DocChowจะจัดการกับประเภทข้อมูลได้อย่างง่ายดาย หากคุณกำลังทำงานกับสเปรดชีต Excel หลายชุดที่คุณต้องการนำเข้าในตาราง MySQL DocChow จะทำให้สกปรก


0

ขั้นตอนที่ 1 สร้างไฟล์ CSV ของคุณ

ขั้นตอนที่ 2 ล็อกอินเข้าสู่เซิร์ฟเวอร์ mysql ของคุณ

     mysql -uroot -pyourpassword 

ขั้นตอนที่ 3 โหลดไฟล์ csv ของคุณ

     load data local infile '//home/my-sys/my-excel.csv' into table my_tables fields terminated by ',' enclosed by '"' (Country, Amount,Qty);

0

อีกหนึ่งเครื่องมือที่มีประโยชน์และเป็นแทน MySQL Front-end เป็นคางคกสำหรับ MySQL น่าเศร้าที่Questไม่รองรับอีกต่อไปแต่เป็น IDE ที่ยอดเยี่ยมสำหรับ MySQL พร้อมด้วยตัวช่วยสร้าง IMPORT และ EXPORT ซึ่งรองรับไฟล์ส่วนใหญ่



0

หากคุณใช้Toad สำหรับ MySQLขั้นตอนในการนำเข้าไฟล์จะเป็นดังนี้:

  1. สร้างตารางใน MySQL ด้วยคอลัมน์เดียวกับของไฟล์ที่จะนำเข้า
  2. ตอนนี้สร้างตารางแล้วไปที่> เครื่องมือ > นำเข้า > ตัวช่วยสร้างการนำเข้า
  3. ตอนนี้ในกล่องโต้ตอบตัวช่วยสร้างการนำเข้าคลิกถัดไป
  4. คลิกเพิ่มไฟล์เรียกดูและเลือกไฟล์ที่จะนำเข้า
  5. เลือกการขยายที่ถูกต้อง ("," แยกสำหรับไฟล์. csv)
  6. คลิกถัดไปตรวจสอบว่าการทำแผนที่ทำได้ถูกต้องหรือไม่
  7. คลิกถัดไปเลือกปุ่มตัวเลือก "ตารางเดียวที่มีอยู่" และเลือกตารางที่จะแมปจากเมนูแบบเลื่อนลงของตาราง
  8. คลิกถัดไปและเสร็จสิ้นกระบวนการ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.