จะนำเข้าไฟล์ csv ไปยัง MySQL workbench ได้อย่างไร?


88

ฉันมีไฟล์ CSV มีข้อมูล 1.4 ล้านแถวดังนั้นฉันจึงไม่สามารถเปิดไฟล์ csv นั้นใน Excel ได้เนื่องจากขีด จำกัด คือประมาณ 1 ล้านแถว

ดังนั้นฉันต้องการนำเข้าไฟล์นี้ใน MySQL workbench ไฟล์ csv นี้มีคอลัมน์เช่น

"Service Area Code","Phone Numbers","Preferences","Opstype","Phone Type"

ฉันกำลังพยายามสร้างตารางใน MySQL workbench ที่มีชื่อว่า "dummy" ที่มีคอลัมน์เช่น

ServiceAreaCodes,PhoneNumbers,Preferences,Opstyp,PhoneTyp. 

ไฟล์ CSV model.csvเป็นชื่อ รหัสของฉันในโต๊ะทำงานเป็นดังนี้:

LOAD DATA LOCAL INFILE 'model.csv' INTO TABLE test.dummy FIELDS TERMINATED BY ',' lines terminated by '\n';

แต่ฉันได้รับข้อผิดพลาดเช่น model.CSV file not found


คุณสามารถทำมันยังอยู่ใน dbForge สตูดิโอสำหรับตัวช่วยสร้างการนำ MySQL มันสร้างตารางโดยอัตโนมัติในลักษณะเช่นนี้prnt.sc/e5iqy1
Devart

คำตอบ:


139

ฉันเดาว่าคุณไม่มีคำสั่ง ENCLOSED BY

LOAD DATA LOCAL INFILE '/path/to/your/csv/file/model.csv'
INTO TABLE test.dummy FIELDS TERMINATED BY ','
ENCLOSED BY '"' LINES TERMINATED BY '\n';

และระบุพา ธ เต็มของไฟล์ csv

โหลด Data Infile - เอกสาร MySQL


1
ขอบคุณฉันไม่ได้รับข้อผิดพลาดใด ๆ ในคำสั่งนี้ แต่ฉันได้รับข้อผิดพลาดเช่นไม่พบไฟล์ model.csv ไฟล์นั้นถูกเก็บไว้ในเดสก์ท็อประบบของฉัน
vps

ไฟล์ csv ถูกเก็บไว้ในเดสก์ท็อประบบของฉัน
vps

5
อัปเดต: หากนำเข้าสตริงที่มีอักขระที่ไม่ได้มาตรฐานจะมีประโยชน์ในการชี้ให้เห็นถึงความต้องการของ "CHARACTER SET utf8" ในคำสั่ง: LOAD DATA LOCAL INFILE '/path/to/file.csv' INTO TABLE db_name.table_name CHARACTER SET utf8 FIELDS TERMINATED BY ',' ENCLOSED BY '' 'บรรทัดที่สิ้นสุดโดย' \ n '; ตาราง / คอลัมน์เป้าหมายควรตั้งค่าเป็น utf-8
ılǝ

1
นอกจากนี้คุณไม่ควรลืมคำหลัก LOCAL คำถามของคุณถูกต้อง
Brij Raj Singh - MSFT

2
ทำงาน "kind-of" บน windows 7 โดยใช้ mysql workbench 6.2 ฉันต้องใช้เครื่องหมายทับสองครั้ง'//path//to//your//csv//file//model.csv'และช่องทั้งหมดที่มีเครื่องหมายทับเดียวพัง
576i

69

ในกรณีที่คุณมีชุดข้อมูลขนาดเล็กวิธีที่จะทำให้ได้โดย GUI คือ:

  1. เปิดหน้าต่างแบบสอบถาม
  2. เลือก * จาก [table_name]
  3. เลือกนำเข้าจากแถบเมนู
  4. กด Apply ที่ด้านล่างขวาใต้ Result Grid

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

อ้างอิง: http://www.youtube.com/watch?v=tnhJa_zYNVY


13
เพียงแค่หมายเหตุ ตัวเลือกการนำเข้านั้นมีในเครื่อง Windows เท่านั้น เห็นได้ชัดว่าปลั๊กอินยังคงใช้. Net อยู่ดังนั้นจึงไม่ทำงานบน Linux หรือ Mac
BrianC

8
อย่าลืมกดสมัครหลังจากนำเข้า
Steve Pitchers

7
ระวังอาจช้ามาก ใช้เวลาสองสามชั่วโมงถึง 25,000 แถว
Rob Sedgwick

2
ระยะเวลาดูเหมือนจะขึ้นอยู่กับฮาร์ดแวร์มาก คอมพิวเตอร์ที่บ้านของฉันสำลัก 10K แถว คอมพิวเตอร์ที่ทำงานของฉันเพิ่งนำเข้าแถว 243K โดยมีประมาณ 200 คอลัมน์ใน 85 วินาที
เคธี

2
@BrianC สิ่งนี้ดูเหมือนจะไม่เป็นเช่นนั้นอีกต่อไป แต่สำหรับฉันในเวอร์ชัน Linux
Jammerx2

21

ในเนวิเกเตอร์ภายใต้ SCHEMAS คลิกขวาที่สคีมา / ฐานข้อมูลของคุณแล้วเลือก "Table Data Import Wizard"

ใช้ได้กับ mac ด้วย


สิ่งนี้ใช้ได้กับฉันบน Ubuntu 18.04 เมื่อสร้างตารางใหม่จาก csv อย่างไรก็ตามฉันไม่สามารถเพิ่มข้อมูลลงในตารางที่มีอยู่โดยใช้วิธีนี้
LP Whigley

2

คุณสามารถใช้ MySQL Table Data Import Wizard


ขอบคุณ :) มันช่วยแก้ปัญหาของฉันได้ เราสามารถเปลี่ยนชื่อคอลัมน์ได้ในภายหลังจาก UI (ไม่ใช่สำหรับผู้เชี่ยวชาญ) เมื่อได้รับการนำเข้า ...
vipul kumawat

ลองหลายอย่างแล้วไม่ได้ผล แต่สุดท้ายก็ทำได้ มันทำงานได้โดยไม่ต้องยุ่งกับการตั้งค่าข้อมูลในเครื่อง ฉันเดาว่า MySQL กำลังใช้งานส่วนแทรกแทน
Peppershaker

1

ในขณะนี้ยังไม่สามารถนำเข้า CSV (โดยใช้ MySQL Workbench) ในทุกแพลตฟอร์มและไม่แนะนำหากไฟล์ดังกล่าวไม่ได้อยู่ในโฮสต์เดียวกับโฮสต์เซิร์ฟเวอร์ MySQL

อย่างไรก็ตามคุณสามารถใช้mysqlimport

ตัวอย่าง:

mysqlimport --local --compress --user=username --password --host=hostname \
--fields-terminated-by=',' Acme sales.part_*

ในตัวอย่างนี้ mysqlimportมีคำสั่งให้โหลดไฟล์ทั้งหมดที่ชื่อ "sales" โดยมีนามสกุลขึ้นต้นด้วย "part_" นี่เป็นวิธีที่สะดวกในการโหลดไฟล์ทั้งหมดที่สร้างในตัวอย่าง "แยก" ใช้ตัวเลือก - บีบอัดเพื่อลดปริมาณการใช้งานเครือข่าย อ็อพชัน --fields-terminated-by = ',' ใช้สำหรับไฟล์ CSV และอ็อพชัน --local ระบุว่าข้อมูลขาเข้าอยู่บนไคลเอนต์ หากไม่มีตัวเลือก --local MySQL จะค้นหาข้อมูลบนโฮสต์ฐานข้อมูลดังนั้นให้ระบุตัวเลือก --local เสมอ

มีข้อมูลที่เป็นประโยชน์ในเรื่องนี้เป็นเอกสาร AWS RDS


0

หากเซิร์ฟเวอร์อยู่บนเครื่องระยะไกลตรวจสอบให้แน่ใจว่าไฟล์อยู่ในเครื่องระยะไกลไม่ใช่ในเครื่องของคุณ

หากไฟล์อยู่ในเครื่องเดียวกับที่เซิร์ฟเวอร์ mysql อยู่ตรวจสอบให้แน่ใจว่าผู้ใช้ mysql มีสิทธิ์ในการอ่าน / เขียนไฟล์หรือคัดลอกไฟล์ teh ไปยังไดเร็กทอรีสกีมา mysql:

ในกรณีของฉันใน Ubuntu มันคือ: /var/lib/mysql/db_myschema/myfile.csv

นอกจากนี้ไม่เกี่ยวข้องกับปัญหานี้ แต่ถ้าคุณมีปัญหากับบรรทัดใหม่ให้ใช้ sublimeTEXT เพื่อเปลี่ยนส่วนท้ายบรรทัดเป็นรูปแบบ WINDOWS บันทึกไฟล์และลองอีกครั้ง


0

ดูเหมือนจะยุ่งยากเล็กน้อยเพราะมันรบกวนจิตใจฉันมานานแล้ว

คุณเพียงแค่ต้องเปิดตาราง (คลิกขวาที่ "เลือกแถว - จำกัด 10,000") และคุณจะเปิดหน้าต่างใหม่ ในหน้าต่างใหม่นี้คุณจะพบ "ไอคอนนำเข้า"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.