gpt4 book ai didi

mysql - 有没有办法忽略 INSERT 中不存在的列?

转载 作者:IT老高 更新时间:2023-10-28 23:51:31 25 4
gpt4 key购买 nike

我正在使用 MySQL GUI通过选择某些表并将从备份转储生成的 INSERT 语句运行到空表(新模式)中,将某些站点迁移到新版本的 CMS。旧表中有几列在新表中不存在,因此脚本停止并出现如下错误:

Script line: 1 Unknown column 'user_id' in 'field list'

挑选要导出的所需列或编辑转储文件将过于繁琐且耗时。为了解决这个问题,我在生成错误时创建未使用的列,通过运行查询导入数据,然后在完成该表时删除未使用的列。我看过 INSERT IGNORE,但这似乎是为了忽略重复的键(不是我要找的)。

有没有办法在忽略目标表中不存在的列的同时执行 INSERT?我正在寻找一些“无痛”的东西,比如一些现有的 SQL 功能。

为了澄清,我正在处理一堆备份文件并将数据导入本地数据库进行测试,然后再将其移动到实时服务器。我希望的解决方案示例:

-- Don't try to insert data from columns that don't exist in "new_table"
INSERT INTO `new_table` {IGNORE UNKNOWN COLUMNS} (`id`, `col1`, `col2`) VALUES
(1, '', ''),
(2, '', '');

如果这样的事情根本不存在,我很乐意接受它作为答案并继续使用我当前的解决方法。

最佳答案

您目前的技术似乎足够实用。只是一个小的变化。

无需等待错误然后一一创建列,您只需导出架构、进行差异比较并找出所有表中所有缺失的列。

这样工作量会减少。

您的 gui 将能够仅导出模式,或者 mysqldump 上的以下开关将有助于找出所有缺失的列。

mysqldump --no-data -uuser -ppassword --database dbname1 > dbdump1.sql
mysqldump --no-data -uuser -ppassword --database dbname2 > dbdump2.sql

比较 dbdump1.sql 和 dbdump2.sql 将为您提供两个数据库中的所有差异。

关于mysql - 有没有办法忽略 INSERT 中不存在的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7704318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com