0

我有很大的 SQL 文件,我需要将此文件导入到我在 ubuntu 和 MySql 下的数据库中

我使用此命令导出数据库,忽略转储中的一些表

  mysqldump -uroot -proot myDatabase --ignore-table=myDatabase.table1 > sql_backup.sql;

现在我需要将它导入另一个数据库并忽略导入操作中的一些表

我如何使用--ignore-table这个命令的选项

mysql -hlocalhost -root -proot newdb< sql_backup.sql

我可以这样做吗?怎么做?

谢谢

4

3 回答 3

1

我每周都有这样的问题。在我的情况下,当我导入数据库但需要转储它时,我需要删除 2 个表。经过快速搜索后,我尝试sed了,这就是我正在做的事情,也许它对你有用:

#!/bin/bash
sed '/`log_sessions`/ d' ${1} > dumpLog
sed '/`log_sessions_requests`/ d' dumpLog > ${2}
rm dumpLog

我使用这个脚本来清理转储(并覆盖)删除所有引用log_sessionslog_sessions_requests

如果你用你的表更改两个名称,它应该工作得很好。

当然,另一种解决方案是进行几次转储......但我认为这是一种更好的方法。

编辑:更改脚本以避免覆盖主转储

如何使用:

  1. 将脚本保存到名为 cleanDB.sh 的新文件中
  2. 像这样调用脚本 ./cleanDB.sh mainDump.sql filteredDump.sql

我想你明白了,如果需要一些解释,请告诉我

于 2013-10-29T08:53:49.317 回答
0

您的 sql_back.sql 文件包含正常的 ddl 和 insert 语句。mysql 命令将执行从文件中给它的任何命令。

您可以手动打开文件,找到表以及要忽略的相关插入语句,然后从文件中删除它们或将它们注释掉并将其保存到“sql_backup_with_ignored_tables.sql”文件并运行该文件。

于 2013-10-29T08:45:14.507 回答
0

不是你期望的那样。

后面的命令“执行”您提供的数据,并且不是带有相关选项的专用“备份”工具。

首先,如果您在备份时忽略了该表,那么它不在 sql_backup.sql 脚本中,您不需要做任何额外的工作。

如果里面有另一个表sql_backup.sql,那么我建议两种解决方案:

  1. 使用--ignore-table您不想要的表,同时进行备份。
  2. 手动或使用文本操作工具(如sedsql_backup.sql在执行前编辑。
于 2013-10-29T08:47:31.927 回答