我的主机名为文章中有一个mysql表,我想从localhost导入article.sql
以保存我在localhost上创建的更改,如何导入该表而不删除它?有一些表连接到文章表,这就是为什么我尽可能避免删除它。
答案 0 :(得分:0)
请考虑以下步骤:
article.sql
文件(简单文本文件)。CREATE TABLE
SQL语句以引用其他目标表,例如 article_temp ,以便不与live,production数据库表,文章冲突。< / LI>
INSERT INTO
,UPDATE
和任何其他查询以引用不同的目标表。 LEFT JOIN NULL
,NOT IN
或NOT EXISTS
条款运行以下三个附加查询中的任何一个(database industry中经常有争议的问题,效率更高) 。关键是找到比较/匹配值(即文章名称)。下面的任何一个都应该工作,不需要运行所有这些(但当然每个都检查重复!)SQL附加查询
INSERT INTO article (col1, col2, col3, col4, col5)
SELECT col1, col2, col3, col4, col5
FROM article_temp
LEFT JOIN article.value = article_temp.value
WHERE article.value IS NULL;
INSERT INTO article (col1, col2, col3, col4, col5)
SELECT col1, col2, col3, col4, col5
FROM article_temp
WHERE article_temp.value NOT IN
(SELECT value FROM article);
INSERT INTO article (col1, col2, col3, col4, col5)
SELECT col1, col2, col3, col4, col5
FROM article_temp
WHERE NOT EXISTS
(SELECT value FROM article
WHERE article.value = article_temp.value);
当然,一旦完成了登台和迁移,请删除临时表:
DROP TABLE article_temp;