Hướng dẫn này chỉ cho bạn cách sử dụng câu lệnh & nbsp; ________ 5 để nhập tệp CSV vào bảng MySQL.
& Nbsp; Tuyên bố LOAD DATA INFILE
cho phép bạn đọc dữ liệu từ tệp văn bản và nhập dữ liệu tệp tệp vào bảng cơ sở dữ liệu rất nhanh.
Trước khi nhập tệp, bạn cần chuẩn bị những điều sau:
- Một bảng cơ sở dữ liệu mà dữ liệu từ tệp sẽ được nhập.
- Một tệp CSV có dữ liệu khớp với số lượng cột của bảng và loại dữ liệu trong mỗi cột.
- Tài khoản, kết nối với máy chủ cơ sở dữ liệu MySQL, có tệp và chèn các đặc quyền.
Giả sử chúng ta có một bảng có tên discounts
với cấu trúc sau:
Chúng tôi sử dụng câu lệnh CREATE TABLE để tạo bảng discounts
như sau:
Code language: SQL [Structured Query Language] [sql]
CREATE TABLE discounts [ id INT NOT NULL AUTO_INCREMENT, title VARCHAR[255] NOT NULL, expired_date DATE NOT NULL, amount DECIMAL[10 , 2 ] NULL, PRIMARY KEY [id] ];
Sau đây & nbsp; Tệp discounts.csv
chứa dòng đầu tiên là các tiêu đề cột và ba dòng dữ liệu khác.
Câu lệnh sau đây nhập dữ liệu từ tệp & nbsp; ________ 10 vào bảng discounts
.
Code language: SQL [Structured Query Language] [sql]
LOAD DATA INFILE 'c:/tmp/discounts.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
Trường của tệp bị chấm dứt bởi dấu phẩy được chỉ định bởi & nbsp;
2 và được đặt bởi các dấu ngoặc kép được chỉ định bởiCode language: SQL [Structured Query Language] [sql]
LOAD DATA INFILE 'c:/tmp/discounts.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
3.Code language: SQL [Structured Query Language] [sql]
LOAD DATA INFILE 'c:/tmp/discounts.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
Mỗi dòng của tệp CSV được chấm dứt bởi một ký tự dòng mới được biểu thị bằng
4.Code language: SQL [Structured Query Language] [sql]
LOAD DATA INFILE 'c:/tmp/discounts.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
Bởi vì tệp có dòng đầu tiên chứa các tiêu đề cột, không nên được nhập vào bảng, do đó chúng tôi bỏ qua nó bằng cách chỉ định & NBSP;
5 Tùy chọn.Code language: SQL [Structured Query Language] [sql]
LOAD DATA INFILE 'c:/tmp/discounts.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
Bây giờ, chúng tôi có thể kiểm tra bảng discounts
để xem liệu dữ liệu có được nhập hay không.
SELECT * FROM discounts;
Chuyển đổi dữ liệu trong khi nhập
Đôi khi định dạng của dữ liệu không khớp với các cột đích trong bảng. Trong các trường hợp đơn giản, bạn có thể chuyển đổi nó bằng cách sử dụng mệnh đề
7 trong & nbsp;Code language: SQL [Structured Query Language] [sql]
LOAD DATA INFILE 'c:/tmp/discounts.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
LOAD DATA INFILE
Tuyên bố.Giả sử cột ngày hết hạn trong & nbsp; Tệp
9 là trong & nbsp; Định dạngCode language: SQL [Structured Query Language] [sql]
LOAD DATA INFILE 'c:/tmp/discounts.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
0.
SELECT * FROM discounts;
Khi nhập dữ liệu vào bảng discounts
, chúng tôi phải chuyển đổi nó thành định dạng ngày MySQL bằng cách sử dụng hàm str_to_date [] như sau:
Code language: SQL [Structured Query Language] [sql]
LOAD DATA INFILE 'c:/tmp/discounts_2.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS [title,@expired_date,amount] SET expired_date = STR_TO_DATE[@expired_date, '%m/%d/%Y'];
Nhập tệp từ máy khách vào máy chủ cơ sở dữ liệu MySQL từ xa
Có thể nhập dữ liệu từ máy khách [máy tính cục bộ] vào máy chủ cơ sở dữ liệu MySQL từ xa bằng cách sử dụng câu lệnh LOAD DATA INFILE
.
Khi bạn sử dụng tùy chọn & nbsp; ________ 23 trong & nbsp; ________ 5, chương trình máy khách sẽ đọc tệp trên máy khách và gửi nó đến máy chủ MySQL. Tệp sẽ được tải lên hệ điều hành máy chủ cơ sở dữ liệu Thư mục tạm thời, ví dụ: & NBSP;
5 trên Windows hoặc & NBSP;
SELECT * FROM discounts;
6 trên Linux. Thư mục này không có thể định cấu hình hoặc được xác định bởi MySQL.
SELECT * FROM discounts;
Hãy cùng xem ví dụ sau:
Code language: SQL [Structured Query Language] [sql]
LOAD DATA LOCAL INFILE 'c:/tmp/discounts.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
Sự khác biệt duy nhất là tùy chọn
3 trong câu lệnh. Nếu bạn tải một tệp CSV lớn, bạn sẽ thấy rằng với tùy chọn & nbsp; ____ 23, sẽ chậm hơn một chút khi tải tệp vì cần có thời gian để chuyển tệp vào máy chủ cơ sở dữ liệu.
SELECT * FROM discounts;
Tài khoản kết nối với máy chủ MySQL không cần phải có đặc quyền tệp để nhập tệp khi bạn sử dụng tùy chọn
3.
SELECT * FROM discounts;
Nhập tệp từ máy khách vào máy chủ cơ sở dữ liệu từ xa bằng & NBSP;
0 có một số vấn đề bảo mật mà bạn nên biết để tránh các rủi ro bảo mật tiềm ẩn.
LOAD DATA INFILE 'c:/tmp/discounts_2.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS [title,@expired_date,amount] SET expired_date = STR_TO_DATE[@expired_date, '%m/%d/%Y'];
Code language: SQL [Structured Query Language] [sql]
Nhập tệp CSV bằng cách sử dụng MySQL Workbench
MySQL Workbench cung cấp một công cụ để nhập dữ liệu vào bảng. Nó cho phép bạn chỉnh sửa dữ liệu trước khi thực hiện các thay đổi.
Sau đây là các bước mà bạn muốn nhập dữ liệu vào bảng:
Mở bảng mà dữ liệu được tải.
Nhấp vào Nhập nút, chọn tệp CSV và nhấp vào nút Mở
Xem lại dữ liệu, nhấp vào nút Áp dụng.
MySQL Workbench sẽ hiển thị hộp thoại & nbsp; Áp dụng tập lệnh SQL vào cơ sở dữ liệu, nhấp vào nút Áp dụng để chèn dữ liệu vào bảng.
Chúng tôi đã chỉ cho bạn cách nhập CSV vào bảng MySQL bằng cách sử dụng
1 và sử dụng MySQL Workbench. Với các kỹ thuật này, bạn có thể tải dữ liệu từ các định dạng tệp văn bản khác như bỏ chọn.Code language: SQL [Structured Query Language] [sql]
LOAD DATA INFILE 'c:/tmp/discounts_2.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS [title,@expired_date,amount] SET expired_date = STR_TO_DATE[@expired_date, '%m/%d/%Y'];
Hướng dẫn này có hữu ích không?