Tạo bản sao lưu MySQL và khôi phục kết xuất MySQL [như được đề cập trong bài viết này] không phải là một nhiệm vụ phức tạp nhưng sẽ đến lúc bạn muốn tự động hóa nó theo cách mà bạn có thể tin tưởng rằng dữ liệu của mình luôn được bảo mật 100%.
Hướng dẫn này sẽ giúp bạn hiểu quy trình nhập dữ liệu vào cơ sở dữ liệu MySQL chạy trên Windows và MacOS bằng MySQL Workbench
Nó cũng sẽ hoạt động trên Linux;
Mục lục
Mở bàn làm việc MySQL
Mở Workbench và kết nối với kết nối cơ sở dữ liệu ưa thích của bạn, đó có thể là máy chủ cục bộ hoặc máy chủ từ xa. Trong trường hợp của tôi để trình diễn, tôi đang sử dụng cơ sở dữ liệu MySQL cục bộ
Nếu bạn chưa tạo kết nối, hãy nhấp vào nút Dấu cộng để tạo kết nối mới như hình bên dưới
Ngay sau khi nhập chi tiết kết nối, hãy đảm bảo rằng cài đặt đã cho là chính xác, bạn có thể thực hiện điều đó bằng cách nhấp vào nút Kiểm tra kết nối. Nó sẽ hiển thị thông báo thành công
Mở kết nối MySQL trong Workbench
Nhấp vào kết nối ưa thích của bạn để mở Phiên bản, đó có thể là phiên bản cục bộ hoặc từ xa
Nếu bạn không có cơ sở dữ liệu hiện có, thì bạn có thể tạo một cơ sở dữ liệu bằng truy vấn SQL hoặc bằng cách truy cập Lược đồ
Nhập dữ liệu từ tệp SQL đã xuất hoặc thư mục dự án SQL
Tiếp theo, từ menu truy cập Máy chủ và Nhấp vào Nhập dữ liệu
Bạn sẽ thấy Màn hình nhập dữ liệu nơi bạn có thể chọn Tệp/Thư mục
- Nhấp vào Nhập từ thư mục dự án kết xuất hoặc Nhập từ tệp độc lập
- Duyệt và chọn thư mục hoặc tệp
- Chọn Lược đồ/Cơ sở dữ liệu đích
- Nhấp vào tab Tiến trình nhập
Ngay khi bạn đang ở trên tab Tiến trình nhập sau khi định cấu hình cài đặt nhập
Bây giờ chúng tôi đã sẵn sàng để bắt đầu quá trình nhập, Nhấp vào nút Bắt đầu nhập để bắt đầu quá trình
Xin chúc mừng bạn đã nhập thành công cơ sở dữ liệu từ tệp kết xuất MySQL vào cơ sở dữ liệu bằng bàn làm việc của MySQL
Hướng dẫn này chỉ cho bạn cách sử dụng câu lệnh
1 để nhập tệp CSV vào bảng MySQLCode 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;
Câu lệnh
1 cho phép bạn đọc dữ liệu từ tệp văn bản và nhập dữ liệu của tệp vào bảng cơ sở dữ liệu rất nhanhCode 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ước khi nhập file bạn cần chuẩn bị những thứ sau
- Một bảng cơ sở dữ liệu mà dữ liệu từ tệp sẽ được nhập vào
- Tệp CSV có dữ liệu khớp với số 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ó các đặc quyền FILE và INSERT
Giả sử chúng ta có một bảng tên là
3 với cấu trúc sauCode 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;
Ta sử dụng câu lệnh CREATE TABLE để tạo bảng
3 như sauCode 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;
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] ];
Tệp
5 sau đây chứa dòng đầu tiên là tiêu đề cột và ba dòng dữ liệu khácCode 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;
Câu lệnh sau nhập dữ liệu từ tệp
0 vào bả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;
3Code 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 'c:/tmp/discounts.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
Code language: SQL [Structured Query Language] [sql]
Trường của tệp được kết thúc bằng dấu phẩy được chỉ định bởi
2 và được bao quanh bởi 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 kết thúc bằng một ký tự dòng mới được chỉ định bởi
4Code 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;
Vì tệp có dòng đầu tiên chứa tiêu đề cột, không nên nhập vào bảng nên chúng tôi bỏ qua nó bằng cách chỉ định tùy chọn
5Code 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 ta có thể kiểm tra bảng
3 để xem dữ liệu đã được nhập hay chưaCode 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;
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 mục tiêu trong bảng. Trong những trường hợp đơn giản, bạn có thể biến đổi nó bằng cách sử dụng mệnh đề
7 trong câu lệnhCode 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;
1Code 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;
Giả sử cột ngày hết hạn trong tệp
9 ở đị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
3, chúng ta phải chuyển nó sang định dạng ngày của MySQL bằng cách sử dụng hàm str_to_date[] như sauCode 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;
1Code 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;
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
1Code 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;
Khi bạn sử dụng tùy chọn
3 trong
SELECT * FROM discounts;
1 , chương trình máy khách sẽ đọc tệp trên máy khách và gửi tệp đó đến máy chủ MySQL. Tệp sẽ được tải lên thư mục tạm thời của hệ điều hành máy chủ cơ sở dữ liệu e. g. ,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;
5 trên Windows hoặc
SELECT * FROM discounts;
6 trên Linux. Thư mục này không thể cấu hình hoặc xác định bởi MySQL
SELECT * FROM discounts;
Hãy cùng xem ví dụ sau
5Code 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;
Sự khác biệt duy nhất là tùy chọn
3 trong câu lệnh. Nếu tải một tệp CSV lớn, bạn sẽ thấy rằng với tùy chọn
SELECT * FROM discounts;
3, việc tải tệp sẽ chậm hơn một chút vì phải mất thời gian để chuyển tệp đến 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 FILE để nhập tệp khi bạn sử dụng tùy chọn
3
SELECT * FROM discounts;
Quá trình nhập tệp từ máy khách sang máy chủ cơ sở dữ liệu từ xa bằng cách sử dụng
10 có một số vấn đề về bảo mật mà bạn cần lưu ý để tránh các rủi ro bảo mật tiềm ẩnCode 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;
Nhập tệp CSV bằng MySQL Workbench
Bàn làm việc của MySQL cung cấp 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 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 vào
Nhấp vào nút Nhập, 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
Bàn làm việc của MySQL sẽ hiển thị hộp thoại “Á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
10 và sử dụng MySQL Workbench. Với những 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, chẳng hạn như được phân định bằng tabCode 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;