Có thể làm mysqldump
bằng cách độc thân SQL query
?
Tôi có nghĩa là để đổ toàn bộ cơ sở dữ liệu, giống như phpmyadmin
khi bạn xuất sangSQL
Có thể làm mysqldump
bằng cách độc thân SQL query
?
Tôi có nghĩa là để đổ toàn bộ cơ sở dữ liệu, giống như phpmyadmin
khi bạn xuất sangSQL
Câu trả lời:
không phải mysqldump, mà là ...
mysql -e "select * from myTable" -u myuser -pxxxxxxxxx mydatabase
bạn có thể chuyển hướng nó ra một tập tin nếu bạn muốn:
mysql -e "select * from myTable" -u myuser -pxxxxxxxx mydatabase > mydumpfile.txt
Cập nhật: Bài viết gốc hỏi liệu anh ta có thể kết xuất từ cơ sở dữ liệu bằng truy vấn không. Những gì anh ấy hỏi và những gì anh ấy có nghĩa là khác nhau. Anh ấy thực sự muốn chỉ mysqldump tất cả các bảng.
mysqldump --tables myTable --where="id < 1000"
Điều này sẽ làm việc
mysqldump --databases X --tables Y --where="1 limit 1000000"
--no-create-info
tùy chọn. Xem câu trả lời của tôi cho một ví dụ.
Bạn có thể kết xuất một truy vấn dưới dạng csv như thế này:
SELECT * from myTable
INTO OUTFILE '/tmp/querydump.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
scp
sau khi kết nối bị chấm dứt. đây là một ví dụ scp user@remote-server.com:/tmp/querydump.csv ~/local.csv
Kết xuất bảng bằng truy vấn where:
mysqldump mydatabase mytable --where="mycolumn = myvalue" --no-create-info > data.sql
Kết xuất toàn bộ bảng:
mysqldump mydatabase mytable > data.sql
Ghi chú:
mydatabase
, mytable
và các nơi tuyên bố với các giá trị mong muốn của bạn.mysqldump
sẽ bao gồm DROP TABLE
và CREATE TABLE
báo cáo trong đầu ra của nó. Do đó, nếu bạn không muốn xóa tất cả dữ liệu trong bảng của mình khi khôi phục từ tệp dữ liệu đã lưu, hãy đảm bảo bạn sử dụng --no-create-info
tùy chọn.-h
, -u
và -p
tùy chọn để các lệnh ví dụ trên để xác định mong muốn của bạn máy chủ cơ sở dữ liệu, người sử dụng và mật khẩu tương ứng.Nếu bạn muốn xuất số lượng bản ghi n cuối cùng của mình thành một tệp, bạn có thể chạy như sau:
mysqldump -u user -p -h localhost --where "1=1 ORDER BY id DESC LIMIT 100" database table > export_file.sql
Ở trên sẽ lưu 100 bản ghi cuối cùng vào export_file.sql, giả sử bảng bạn đang xuất có cột id tự động tăng.
Bạn sẽ cần thay đổi giá trị người dùng, localhost, cơ sở dữ liệu và bảng. Bạn có thể tùy ý thay đổi cột id và xuất tên tệp.
MySQL Workbench cũng có tính năng này gọn gàng trong GUI. Chỉ cần chạy truy vấn, nhấp vào biểu tượng lưu bên cạnh Xuất / Nhập:
Sau đó chọn "Câu lệnh SQL INSERT (* .sql)" trong danh sách.
Nhập tên, nhấp vào lưu, xác nhận tên bảng và bạn sẽ có tệp kết xuất của mình.
Kết hợp nhiều thứ ở trên là ví dụ thực tế thực tế của tôi, chọn các bản ghi dựa trên cả mét và dấu thời gian. Tôi đã cần lệnh này trong nhiều năm. Thực hiện nhanh chóng.
mysqldump -uuser -ppassword main_dbo trHourly --where="MeterID =5406 AND TIMESTAMP<'2014-10-13 05:00:00'" --no-create-info --skip-extended-insert | grep '^INSERT' > 5406.sql
mysql Xuất kết quả truy vấn dòng lệnh
mysql -h120.26.133.63 -umiyadb -proot123 miya -e "select * from user where id=1" > mydumpfile.txt