我想知道mysqldump中是否有任何方法可以添加适当的create table选项[IF NOT EXISTS].有任何想法吗?
小智 25
尝试在SQL文件中使用它:
sed 's/CREATE TABLE/CREATE TABLE IF NOT EXISTS/g' <file-path>
Run Code Online (Sandbox Code Playgroud)
或者保存
sed -i 's/CREATE TABLE/CREATE TABLE IF NOT EXISTS/g' <file-path>
Run Code Online (Sandbox Code Playgroud)
它并不理想,但它有效:P
sfu*_*ger 11
使用sed@Pawel描述的效果很好.然而,您可能不喜欢通过比绝对必要的更多潜在错误源来管理数据的想法.在这种情况下,可以使用两个单独的转储:
--no-data --skip-add-drop-table)--no-create-info --skip-add-drop-table)还有一些其他事情要处理(例如触发器).有关详细信息,请查看手册
转储输出是 DROP 和 CREATE 的组合,因此您必须删除 DROP 语句并更改 CREATE 语句以形成有效的(逻辑)输出:
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
Run Code Online (Sandbox Code Playgroud)