2012-10-01 40 views
7

tôi googled rất nhiều và tôi không thể tìm thấy gì về nó!Làm thế nào để nhập một kết xuất MySQL từ dòng lệnh WITH ghi đè lên

[[email protected] backups]# mysql -u username_1 -p db_1 < tables_to_import/tables.sql 
ERROR 1050 (42S01) at line 19: Table 'ps_customer' already exists 

với mysql -f là giống nhau. tôi chỉ đơn giản là nhập khẩu .sql và viết lại rằng bảng, ai đó có thể giúp tôi?

p.s. tôi biết rằng khi bạn xuất một db bạn có thể chọn tùy chọn "DROP TABLE" nhưng nếu tôi có một bản sao lưu, mà không có tuyên bố này? làm thế nào tôi có thể ép buộc? Cảm ơn

Trả lời

3

Bạn đang cố gắng ghi đè toàn bộ cơ sở dữ liệu? Nếu có, bạn có thể thả tất cả các bảng theo cách thủ công và sau đó chạy tập lệnh nhập của bạn. Điều này rất dễ làm trong phpmyadmin. Nếu bạn đang sử dụng CLI, cách nhanh nhất là sử dụng DROP DATABASE databasename và sau đó create database, mặc dù tôi nghĩ bạn sẽ phải cấp lại đặc quyền cho bất kỳ người dùng nào không phải là người dùng gốc.

Một tùy chọn khác là mở tệp kết xuất của bạn và thêm DROP TABLE tablename trước mỗi lệnh CREATE TABLE. Bạn có thể có thể làm điều này một cách dễ dàng với một số regex thông minh.

+0

Hi octern! Không, tôi muốn ghi đè lên các bảng CHỈ chứa trong bảng.sql (trong .sql i xuất khẩu 6 bảng, vì vậy tôi muốn ghi đè chỉ những), là nó possibile từ một điểm hợp lý của xem hoặc có lẽ tôi thiếu một cái gì đó? – ienabellamy

+1

Sau đó, sử dụng gợi ý thứ hai của tôi và thêm lệnh DROP TABLE cho mỗi lệnh CREATE TABLE trong bảng.sql. Bạn có thể viết một kịch bản lệnh shell để làm điều này, nhưng nếu chỉ có 6 bảng, bạn sẽ có thể thực hiện nó bằng tay trong chưa đầy một phút. – octern

+0

cảm ơn cho các octem tip. Hẹn gặp lại ;-) – ienabellamy

-2

Tôi muốn đề xuất tùy chọn - thả-bảng.

21

Khi bạn làm mysqldump thêm --add-drop-table (như twihoX đã đề cập). Sau đó, nhập khẩu của bạn như bình thường. Vì vậy, một cái gì đó như:

mysqldump --add-drop-table -u user -p > dumpfile.sql 

mysql -u user -p < dumpfile.sql 
+0

Tại sao xếp hạng xuống? – DrewB

+0

Xin lỗi vì không bình luận, nhưng đó là cách khác. không phải mysql ...> dumpfile.sql. Vì vậy, các lệnh sẽ là mysqldump --add-drop-table -u user -p> dumpfile.sql và sau đó mysql -u user -p WoodyDRN

+0

Bắt tốt. Tôi đã sửa lỗi. – DrewB

Các vấn đề liên quan