根据one source,mysqldump没有此选项。 你可以在导入转储文件时使用--force选项,MySQL将忽略由于尝试创建重复表而产生的错误。但是请注意,使用这种方法,其他错误也会被忽略。 否则,您可以通过一个脚本运行转储文件,该脚本将所有出现的CREATE TABLE替换为CREATE TABLE IF NOT EXISTS。
mysqldump --no-data -u root <schema> | sed 's/^CREATE TABLE /CREATE TABLE IF NOT EXISTS /'| sed 's/^DROP TABLE IF EXISTS /-- DROP TABLE IF EXISTS /' > <schema>.sql
8条答案
按热度按时间ar5n3qh51#
尝试在SQL文件上使用此命令:
或者保存
这不是理想的,但它的工作:P
vpfxa7rd2#
根据one source,mysqldump没有此选项。
你可以在导入转储文件时使用
--force
选项,MySQL将忽略由于尝试创建重复表而产生的错误。但是请注意,使用这种方法,其他错误也会被忽略。否则,您可以通过一个脚本运行转储文件,该脚本将所有出现的
CREATE TABLE
替换为CREATE TABLE IF NOT EXISTS
。wwwo4jvm3#
使用@Pawel所描述的
sed
工作得很好。然而,您可能不喜欢通过比绝对必要的更多潜在错误源来传输数据的想法。在这种情况下,可以使用两个单独的转储:--no-data --skip-add-drop-table
)--no-create-info --skip-add-drop-table
)还有一些其他的事情需要注意(eidogg.触发器)。查看手册了解详细信息。
6qfn3psc4#
这可能不是您想要的,但是对于
--add-drop-table
,每个CREATE都以相应的DROP TABLE语句为前缀。否则,我会使用简单的搜索/替换(例如,使用
sed
)。t8e9dugd5#
转储输出是DROP和CREATE的组合,因此您必须删除DROP语句并更改CREATE语句以形成有效的(逻辑)输出:
ldioqlga6#
用这个创建一个bash脚本。例如dump.sh
touch dump.sh
请确保您使其可执行:
chmod 0750 dump.sh
dump.sh:
sbtkgmzw7#
sed在结尾没有'g'(global)时会快多:
例如:
fafcakar8#
查找和替换文本在Windows 7上使用PowerShell
打开命令提示符并使用下面的命令
此命令将用替换的文本创建一个新文件。删除从'开始的命令|'(管道),如果要替换和保存同一文件上的内容。