我正在尝试将所有共享相同数据结构的多个表合并到一个单个表中,但是,似乎在插入表时它所做的就是插入x行数等于其中的数量源。
表1:20,000个数据行
索引表:10,000个数据行
因此,如果我要使用以下内容将表1插入到索引表中:
INSERT IGNORE INTO 'database1`.`Index` SELECT * FROM
`database1`.`Table1` ;
使用上面的内容,它只插入10,000行可用的20,000行等于。
答案 0 :(得分:1)
我的猜测是其他10,000个是重复值,并且由于您在IGNORE
上使用INSERT
,因此语句完成且没有错误。
答案 1 :(得分:0)
REPLACE INTO user (id,name) VALUES (12,"John");
#if there is user with id = 12 it wil lreplace it.
答案 2 :(得分:0)
由于你正在使用INSERT IGNORE,我猜你有10000个重复的密钥被静默丢弃。难道你不觉得你需要那么奇怪吗?
根据您的表格布局,您需要一些方法来重新调整表格以绕过关键约束。例如,为您要插入的表创建一个新的自动增量键,附加另一个表,并以某种方式对重复进行排序。
答案 3 :(得分:0)
这取决于表格的结构。你能在两张桌子上向我们展示“show create table ...”吗?
此外,列出您从mysql客户端获得的反馈(例如,“记录:100个重复:0警告:0”) - 这有助于查明发生的事情和原因。
如果表中有UNIQUE KEYS值,则不会使所有插入成功。