回答

收藏

没有办法忽略它INSERT上不存在的列?

技术问答 技术问答 490 人阅读 | 0 人回复 | 2023-09-14

我正在使用MySQL GUI,选择一些表并将INSERT从备份转储生成的句子运行到空表(新模式),以将某些站点迁移到空表(新模式)CMS新版本。新表中不存在旧表中的几列,因此脚本会因以下错误而停止:* O+ K2 Y3 [- f5 W& E
脚本行: 字段列表中的未知列user_id”% p7 @0 r5 Q3 O2 D) e8 Y, T/ t5 l
选择要导出的所需列,或编辑存储文件将非常无聊和耗时。为了解决这个问题,我将在生成错误时创建未使用的列,通过操作查询导入数据,然后在处理表后删除未使用的列。我已经看过了INSERTIGNORE,但这似乎是为了忽略重复键(不是我要找的)。
9 e+ D1 q0 N: b9 x: n, i有什么办法可以?INSERT在忽略目标表中不存在的列时执行一次?我正在寻找无痛的东西,比如一些现有的东西SQL功能。
( G3 L9 l; A. j$ L$ @为了澄清,我正在处理大量备份文件,将数据导入当地数据库进行测试,然后将其移动到实时服务器中。我想要的解决方案的例子:
( a" {/ G. G1 h9 r9 s+ u6 o-- 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  ,,,,如果根本没有这样的问题,我愿意把它作为答案,继续使用我目前的解决方案。
+ r, l( D6 }8 V6 [6 S0 r8 l5 d5 p                                                                ! u7 o5 D  ~+ W
    解决方案:                                                               
# I% Z# ]# @& c: K2 B3 n                                                                你目前的技术似乎很实用。这只是一个小小的变化。( |  ]9 n/ J9 P5 f2 L' I
您只能导出模式,比较并找出所有表中缺失的列,而不必等待错误,然后一个接一个地创建列。! T% o. Y  i0 n8 v& P7 x
这样,工作量就会减少。
& h2 F  W- D/ p" |8 |  U8 F您的gui它只能导出架构,否则mysqldump上下开关将有助于找出所有缺失的列。# _9 V4 _# k1 h4 f1 n  X( w
mysqldump --no-data -uuser -ppassword --database dbname1 > dbdump1.sqlmysqldump --no-data -uuser -ppassword --database dbname2 > dbdump2.sql区别dbdump1.sql和dbdump2.sql这两个数据库的所有差异都将为您提供。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则