基本上我有一个包含2000万行和5列(字段)的表,当我执行mysql转储时,我想将行导入另一个有6列的表,它返回错误,因为列不一样
INSERT INTO table2 VALUES (value1, value2, value3, value4, value5)
我想插入第6列的所有行,这样我就不会收到错误。 我无法真正编辑.sql转储其2gb。有办法吗? 请记住目标表(要转储数据的位置)已包含大量数据(800万行),因此更改表将永远需要 有什么建议 ?
答案 0 :(得分:1)
您需要指定要插入的行
INSERT INTO table2(col1,col2,col3,col4,col5)VALUES(value1,value2,value3,value4,value5)
答案 1 :(得分:1)
有几种方法可以做到这一点。
首先,有办法编辑2GB文件(取决于您的操作系统)。 对于Windows,我有EmEditor的良好经验,可以处理Search&替换大文件的操作。
其次,您可以分两个阶段完成:
1.将转储文件打开到包含5列的表中,例如temp
。
2.从该表复制到目标表。
INSERT INTO table2 (col1, col2, col3, col4, col5)
SELECT (col1, col2, col3, col4, col5)
FROM temp;
这假设table2中的col6(没有数据)具有默认值。 否则:
INSERT INTO table2 (col1, col2, col3, col4, col5, col6)
SELECT (col1, col2, col3, col4, col5, 'anyDefaultValue')
FROM temp;
答案 2 :(得分:1)
以下是您的选择:
INSERT INTO newTable SELECT col1, col2, col3, col4, col5, "default value" FROM newTableCopy
我建议选项4,但确实需要额外的步骤。