Làm cách nào để nhập tệp csv vào MySQL workbench?


88

Tôi có một tệp CSV. Nó chứa 1,4 triệu hàng dữ liệu, vì vậy tôi không thể mở tệp csv đó trong Excel vì giới hạn của nó là khoảng 1 triệu hàng.

Do đó, tôi muốn nhập tệp này trong bàn làm việc MySQL. Tệp csv này chứa các cột như

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

Tôi đang cố gắng tạo một bảng trong MySQL workbench có tên là "dummy" chứa các cột như

ServiceAreaCodes,PhoneNumbers,Preferences,Opstyp,PhoneTyp. 

Tệp CSV được đặt tên model.csv. Mã của tôi trong bàn làm việc như sau:

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

nhưng tôi gặp lỗi như model.CSV file not found


Bạn cũng có thể làm điều đó trong dbForge Studio cho thuật sĩ nhập MySQL . Nó tự động tạo ra một bảng theo cách như vậy prnt.sc/e5iqy1
Devart

Câu trả lời:


139

Tôi đoán bạn đang thiếu điều khoản 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';

Và chỉ định đường dẫn đầy đủ của tệp csv

Tải tệp hồ sơ dữ liệu - Tài liệu MySQL


1
cảm ơn bạn, tôi không gặp bất kỳ lỗi nào trong lệnh này. nhưng tôi gặp lỗi như không tìm thấy tệp model.csv. mà tập tin được lưu trữ trong máy tính để bàn hệ thống của tôi
vps

tập tin csv được lưu trữ trong máy tính để bàn hệ thống của tôi
vps

5
CẬP NHẬT: Nếu nhập chuỗi có ký tự không chuẩn, sẽ hữu ích khi chỉ ra sự cần thiết của "CHARACTER SET utf8" cho câu lệnh: LOAD DATA LOCAL INFILE '/path/to/file.csv' INTO TABLE db_name.table_name BỘ NHÂN VẬT utf8 LĨNH VỰC ĐƯỢC CHẤM DỨT BỞI ',' BỊ BỎ QUA '"' kết thúc bởi '\ n'; Bảng / cột mục tiêu cũng phải được đặt thành utf-8
ılǝ

1
cũng không nên quên từ khóa LOCAL, truy vấn của bạn vừa phải
Brij Raj Singh - MSFT

2
Làm việc "kiểu" trên windows 7 bằng cách sử dụng bàn làm việc mysql 6.2. Tôi đã phải sử dụng dấu gạch chéo kép '//path//to//your//csv//file//model.csv'và tất cả các trường chứa dấu gạch chéo đơn đều bị phá vỡ.
576i

69

Trong trường hợp bạn có tập dữ liệu nhỏ hơn, một cách để đạt được nó bằng GUI là:

  1. Mở cửa sổ truy vấn
  2. CHỌN * TỪ [tên_bảng]
  3. Chọn Nhập từ thanh menu
  4. Nhấn Áp dụng ở phía dưới bên phải bên dưới Lưới kết quả

nhập mô tả hình ảnh ở đây

Tham khảo: http://www.youtube.com/watch?v=tnhJa_zYNVY


13
Chỉ là một LƯU Ý. Tùy chọn nhập đó chỉ có trên máy Windows. Các plugin dường như vẫn dựa trên .Net vì vậy không hoạt động trên Linux hoặc Mac.
BrianC

8
Đừng quên nhấn Áp dụng sau khi nhập.
Steve Pitchers

7
Hãy cẩn thận, điều này có thể rất chậm. Phải mất một vài giờ làm đến 25.000 hàng
Rob Sedgwick

2
Khoảng thời gian dường như rất phụ thuộc vào phần cứng. Máy tính nhà tôi hoàn toàn bị nghẹt trên 10K hàng. Máy tính công việc của tôi vừa nhập 243K hàng với khoảng 200 cột trong 85 giây.
KathyA.

2
@BrianC Điều này dường như không còn xảy ra nữa, nó xuất hiện đối với tôi trên phiên bản Linux.
Jammerx2

21

Trong trình điều hướng bên dưới SCHEMAS, nhấp chuột phải vào giản đồ / cơ sở dữ liệu của bạn và chọn "Trình hướng dẫn nhập dữ liệu bảng"

Hoạt động cho cả mac.


Điều này đã làm việc cho tôi trên Ubuntu 18.04 khi tạo một bảng mới từ csv. Tuy nhiên, tôi không thể thêm dữ liệu vào bảng hiện có bằng phương pháp này.
LP Whigley

2

Bạn có thể sử dụng MySQL Table Data Import Wizard


Cảm ơn :) nó đã giải quyết được vấn đề của tôi. chúng ta có thể thay đổi tên cột sau đó từ giao diện người dùng (không dành cho chuyên gia), khi nó được nhập ...
vipul kumawat

đã thử nhiều cách không hiệu quả nhưng cuối cùng điều này đã thành công. nó hoạt động ngay cả khi không gây rối với cài đặt tệp tin dữ liệu cục bộ. Tôi đoán MySQL đang chạy chèn.
Peppershaker

1

Hiện tại, không thể nhập CSV (sử dụng MySQL Workbench) trong tất cả các nền tảng, cũng như không được khuyến nghị nếu tệp đã nói không nằm trong cùng một máy chủ lưu trữ máy chủ MySQL.

Tuy nhiên, bạn có thể sử dụng mysqlimport .

Thí dụ:

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

Trong ví dụ mysqlimportnày được hướng dẫn tải tất cả các tệp có tên "bán hàng" với phần mở rộng bắt đầu bằng "part_". Đây là một cách thuận tiện để tải tất cả các tệp được tạo trong ví dụ "tách". Sử dụng tùy chọn --compress để giảm thiểu lưu lượng mạng. Tùy chọn --fields-termina-by = ',' được sử dụng cho các tệp CSV và tùy chọn --local chỉ định rằng dữ liệu đến nằm trên máy khách. Nếu không có tùy chọn --local, MySQL sẽ tìm kiếm dữ liệu trên máy chủ cơ sở dữ liệu, vì vậy hãy luôn chỉ định tùy chọn --local.

Có thông tin hữu ích về chủ đề này trong tài liệu AWS RDS .


0

Nếu máy chủ nằm trên một máy từ xa, hãy đảm bảo rằng tệp nằm trong máy từ xa chứ không phải trong máy cục bộ của bạn.

Nếu tệp nằm trong cùng một máy có máy chủ mysql, hãy đảm bảo người dùng mysql có quyền đọc / ghi tệp hoặc sao chép tệp teh vào thư mục lược đồ mysql:

Trong trường hợp của tôi trong ubuntu, nó là: /var/lib/mysql/db_myschema/myfile.csv

Ngoài ra, không liên quan đến sự cố này, nhưng nếu bạn gặp sự cố với các dòng mới, hãy sử dụng sublimeTEXT để thay đổi phần cuối của dòng thành định dạng WINDOWS, lưu tệp và thử lại.


0

Nó có vẻ hơi khó vì nó đã thực sự làm phiền tôi trong một thời gian dài.

Bạn chỉ cần mở bảng (nhấp chuột phải vào "Chọn Hàng- Giới hạn 10000") và bạn sẽ mở ra một cửa sổ mới. Trong cửa sổ mới này, bạn sẽ tìm thấy "biểu tượng nhập".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.