Export và Phương thức Backup trong MySQL
Cách đơn giản nhất của việc truy xuất dữ liệu vào trong một text file là sử dụng lệnh SELECT…INTO OUTFILE mà xuất một kết quả truy vấn một cách trực tiếp vào trong file trên Server host. Export với lệnh SELECT…INTO OUTFILE trong MySQL Cú pháp của lệnh này là tổ hợp một lệnh ...
Cách đơn giản nhất của việc truy xuất dữ liệu vào trong một text file là sử dụng lệnh SELECT…INTO OUTFILE mà xuất một kết quả truy vấn một cách trực tiếp vào trong file trên Server host.
Export với lệnh SELECT…INTO OUTFILE trong MySQL
Cú pháp của lệnh này là tổ hợp một lệnh SELECT thông thường với INTO OUTFILE ten_file ở cuối. Định dạng output mặc định là giống như LOAD DATA, vì thế lệnh sau sẽ xuất bảng sinhvienk60 vào trong /tmp/vietjack.txt.
SELECT * FROM sinhvienk60 INTO OUTFILE '/tmp/vietjack.txt';
Bạn có thể thay đổi định dạng output bởi sử dụng các tùy chọn để chỉ cách trích dẫn và giới hạn các cột và các hàng. Để xuất bảng sinhvienk60 với định dạng CSV với các dòng CRLF, sử dụng lệnh:
SELECT * FROM passwd INTO OUTFILE '/tmp/vietjack.txt' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY ' ';
Lệnh SELECT ... INTO OUTFILE có các thuộc tính sau:
Xuất bảng dưới dạng dữ liệu thô
Chương trình mysqldump được sử dụng để sao hoặc backup các bảng hoặc cơ sở dữ liệu. Chương trình này có thể viết bảng output hoặc ở dạng file dữ liệu thô hoặc dưới dạng một tập hợp các lệnh INSERT mà tái tạo các bản ghi trong bảng.
Để xuất một bảng dưới dạng file dữ liệu, bạn phải xác định một tùy chọn -- mà chỉ dẫn thư mục, nơi bạn muốn MySQL Server để ghi file đó.
Ví dụ, để xuất bảng sinhvienk60 từ cơ sở dữ liệu sinhvien vào một file trong thư mục /tmp, sử dụng lệnh sau:
$ mysqldump -u root -p --no-create-info --tab=/tmp sinhvien sinhvienk60 password ******
Xuất nội dung hoặc định nghĩa bảng trong định dạng SQL
Để xuất một bảng trong định dạng SQL vào một file, sử dụng lệnh giống như:
$ mysqldump -u root -p sinhvien sinhvienk60 > dump.txt password ******
Lệnh này sẽ tạo một file chứa nội dung như sau:
-- MySQL dump 8.23 -- -- Host: localhost Database: sinhvien --------------------------------------------------------- -- Server version 3.23.58 -- -- Table structure for table `sinhvienk60` -- CREATE TABLE sinhvienk60 ( mssv INT NOT NULL AUTO_INCREMENT, ho VARCHAR(255) NOT NULL, ten VARCHAR(255) NOT NULL, tuoi INT NOT NULL, diemthi FLOAT(4,2) NOT NULL, PRIMARY KEY (mssv) ) TYPE=MyISAM; -- -- Dumping data for table `sinhvienk60` -- INSERT INTO sinhvienk60 (ho, ten, diemthi) VALUES ("Dinh Van", "Cao", 8); INSERT INTO sinhvienk60 (ho, ten, diemthi) VALUES ("Nguyen Van", "Thanh", 9); INSERT INTO sinhvienk60 (ho, ten, diemthi) VALUES ("Nguyen Hoang", "Manh", 7.5); INSERT INTO sinhvienk60 (ho, ten, diemthi) VALUES ("Tran Van", "Nam", 10);
Để xuất nhiều bảng, bạn xác định tất cả bảng đó sau tên cơ sở dữ liệu. Để xuất cả cơ sở dữ liệu, đừng xác định bất kỳ bảng nào sau cơ sở dữ liệu, như sau:
$ mysqldump -u root -p sinhvien > database_dump.txt password ******
Để backup tất cả cơ sở dữ liệu có sẵn trên host của bạn, sử dụng lệnh sau:
$ mysqldump -u root -p --all-databases > database_dump.txt password ******
Tùy chọn --all--databases là có sẵn trong MySQL 3.23.12.
Phương thức này có thể được sử dụng để triển khai một chiến lược sao lưu cơ sở dữ liệu.
Sao chép bảng hoặc cơ sở dữ liệu tới Host khác
Nếu bạn muốn sao chép các bảng hoặc cơ sở dữ liệu từ một MySQL Server tới Server khác, thì sử dụng mysqldump với tên cơ sở dữ liệu và tên bảng.
Chạy lệnh sau tại source host. Lệnh này sẽ xuất toàn bộ cơ sở dữ liệu vào trong dump.txt file.
$ mysqldump -u root -p ten_database ten_bang > dump.txt password *****
Bạn có thể sao chép toàn bộ cơ sở dữ liệu mà không cần sử dụng một tên bảng cụ thể như giải thích trên.
Bây giờ, dump.txt file trên host khác và sử dụng lệnh sau. Trước khi chạy lệnh, đảm bảo bạn có database_name đã được tạo trên Server đích.
$ mysql -u root -p ten_database < dump.txt password *****
Một cách khác để thực hiện việc này mà không sử dụng một file trung gian là gửi output của mysqldump một cách trực tiếp thông qua mạng tới MySQL Server từ xa. Nếu bạn có thể kết nối tới cả hai Server từ host đó, nơi đặt source database, sử dụng lệnh này (đảm bảo bạn có thể truy cập với cả hai Server đó):
$ mysqldump -u root -p ten_database | mysql -h other-host.com ten_database
Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.
Các bài học MySQL phổ biến khác tại code24h: