您可以尝试下一个:
做一个TableShadowCopy。(如果是live table,这样可以避免网站挂起,否则可以跳过这一步)
DROP TABLE IF EXISTS __shadow_table; // droping previous shadow table if exists
CREATE TABLE __shadow_table LIKE table; // COPY source table structue
CREATE TABLE IF NOT EXISTS __shadow_table SELECT * FROM table; // possible use of WHERE statemnet
现在您有了源表的精确副本,您可以使用它来做您无需担心导入时“站点关闭”的后果的事情。
在新创建的表上禁用索引
ALTER TABLE __shadow_table DISABLE KEYS;
现在您可以导入表 ( __shadow_table
)。
尝试LOAD DATA LOCAL INFILE
(需要FILE
许可)
如果您没有 FILE
权限使用BULK INSERT
INSERT INTO __shadow_table (col1, col2, col3, col4) VALUES (1,2,3,4), (6,7,8,9), (20,30,40,60);
ENABLE表上的索引(影子表)
ALTER TABLE __shadow_table ENABLE KEYS;
DROP原始表
DROP TABLE IF EXISTS table
将影子表重命名为原始 ( DROP
ped) 名称
RENAME TABLE __shadow_table TO table;
导入时禁用索引可以减少插入数据时的负载和 HDD 搜索。此外,如果表是InnoDB
,FOREIGN_KEY_CHECKS
则应禁用。导入期间禁用的所有内容都应在导入结束时启用。