导入CSV文件较大

问题描述:

我要导入数据库table.I大的CSV文件正在使用“mysql的”作为database.My表通过禁用/启用约束和索引具有“Innodb的”引擎和我我正在使用以下命令导入CSV文件: “LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE ......”。 我的高级建议我使用以下命令以更快的方式导入CSV文件:导入CSV文件较大

1)禁用或删除索引。

2)禁用或放弃约束。

3)火灾荷载数据命令

4)启动或重新创建约束

5)启用或重新创建索引。

我有一个主键与自动增量,两个外键和一个唯一索引在两列。

由于我是数据库新手,我在互联网上搜索如何启用/禁用约束?从我能够理解

1)主键,一个唯一索引在内部与NOT NULL约束

2)外键的内部与非空约束一个索引。

3)同样通过使用“SET FOREIGN_KEY_CHECKS = 0”命令,我们可以能够禁用外键,但它会禁用数据库,而不是单个表的所有外键检查,所以我想为单个表。

4)我可以通过使用“ALTER TABLE table_name DISABLE ALL KEYS”命令来禁用唯一索引。

所以,我有以下疑问:

1)我可以能够禁用特定表的外键约束和禁止后,也将在内部禁用索引或我不得不放弃它。

2)我可以禁用主键与自动增量和禁用后,也将禁用唯一索引内部或我必须放弃它,但我想自动增量为第一列即主键为CSV文件don没有第一列值。

有人可以帮我解决这个问题,谢谢。

+0

语法是:ALTER TABLE table_name DISABLE KEYS 并且它不禁用唯一索引 – eyaler

在从CSV文件导入更多数据之前禁用表中的关键限制可能会加速导入,但如果您不能100%确定新导入的CSV数据未违反关键约束,则可以导入后无法重新创建丢弃的KEY。

  1. 如果导入数据的第一列的值为NULL,则导入它将导致Mysql创建新唯一PRIMARY KEY的序列号。如果你放弃AUTO_INCREMENTING PRIMARY KEY,这个不错的功能将被禁用,并且你的数据将没有主键。围绕这一点有许多解决方法,但其中大多数将消耗更多的时间和计算资源,而不仅仅是在导入期间离开PRIMARY KEY。