我有一个很大的 SQL 文件,我需要将此文件导入到 ubuntu 和 MySql 下的数据库
我使用此命令导出数据库,并忽略转储中的一些表
mysqldump -uroot -proot myDatabase --ignore-table=myDatabase.table1 > sql_backup.sql;
现在我需要将其导入到另一个数据库并忽略导入操作中的一些表
如何在此命令中使用 --ignore-table
选项
mysql -hlocalhost -root -proot newdb< sql_backup.sql
我可以这样做以及如何做?
谢谢
最佳答案
我每周都会遇到这样的问题。就我而言,当我导入数据库但需要转储它时,我需要删除 2 个表。经过快速搜索后,我尝试了 sed,这就是我正在做的事情,也许它对您有用:
#!/bin/bash
sed '/`log_sessions`/ d' ${1} > dumpLog
sed '/`log_sessions_requests`/ d' dumpLog > ${2}
rm dumpLog
我使用此脚本来清理转储(并覆盖),删除对 log_sessions
和 log_sessions_requests
的所有引用
如果您使用表更改这两个名称,它应该可以正常工作。
当然,另一个解决方案是进行多次转储...但我认为这是更好的方法。
已编辑:更改了脚本以避免覆盖主转储
使用方法:
- 将脚本保存到名为 cleanDB.sh 的新文件
- 像这样调用脚本 ./cleanDB.sh mainDump.sqlfilteredDump.sql
我想你明白了,如果需要一些解释,请告诉我
关于php - 在执行 SQL 文件时与 MySQL 一起使用 --ignore-table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19653245/