如何从命令行WITH overwrite导入MySQL转储

ien*_*amy 13 mysql import overwrite

我google了很多,我什么都没发现!

[root@someday backups]# mysql -u username_1 -p db_1 < tables_to_import/tables.sql 
ERROR 1050 (42S01) at line 19: Table 'ps_customer' already exists
Run Code Online (Sandbox Code Playgroud)

mysql -f是一样的.我希望简单地导入.sql并重写那些表,有人可以帮助我吗?

ps我知道当你导出数据库时你可以选择选项"DROP TABLE",但如果我有一个备份,没有这个声明?我该怎么办?谢谢

Dre*_*ewB 34

当你做mysqldump时添加--add-drop-table(就像提到的twihoX).然后像往常一样进行导入.所以类似于:

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

mysql -u user -p < dumpfile.sql 
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.很高兴我们能够解决这个问题,以便其他人可以从准确的答案中受益. (5认同)

oct*_*ern 6

您是否试图覆盖整个数据库?如果是这样,您可以手动删除所有表,然后运行导入脚本.这在phpmyadmin中很容易做到.如果你正在使用CLI,最快的方法就是使用DROP DATABASE databasename然后create database,虽然我认为你必须为任何非root用户重新授予权限.

另一种选择是打开转储文件并DROP TABLE tablename在每个CREATE TABLE命令之前添加.你可以用一些聪明的正则表达式轻松地做到这一点.

  • 然后使用我的第二个建议,并在 tables.sql 中为每个 CREATE TABLE 命令添加一个 DROP TABLE 命令。您可以编写一个 shell 脚本来执行此操作,但如果只有 6 个表,您应该可以在一分钟内手动完成。 (2认同)