通过禁用/启用约束和索引在mysql中导入大型CSV文件

通过禁用/启用约束和索引在mysql中导入大型CSV文件,mysql,sql,database,Mysql,Sql,Database,我想导入数据库表中的大型CSV文件。我正在使用“Mysql”作为数据库。我的表有“Innodb”引擎,我正在使用以下命令导入CSV文件: `LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE......` 我的上级建议我使用以下命令以更快地导入CSV文件: 禁用或删除索引 禁用或删除约束 消防负荷数据命令 启用或重新创建约束 启用或重新创建索引 我有一个自动递增的主键,两个外键和两列上的唯一索引 由于我刚接触数据库,我在互联网上搜索了如何启

我想导入数据库表中的大型CSV文件。我正在使用“Mysql”作为数据库。我的表有“Innodb”引擎,我正在使用以下命令导入CSV文件:

`LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE......`
我的上级建议我使用以下命令以更快地导入CSV文件:

  • 禁用或删除索引
  • 禁用或删除约束
  • 消防负荷数据命令
  • 启用或重新创建约束
  • 启用或重新创建索引
  • 我有一个自动递增的主键,两个外键和两列上的唯一索引

    由于我刚接触数据库,我在互联网上搜索了如何启用/禁用约束?从这一点我可以理解

  • 主键在内部有一个唯一的索引,带有NOTNULL约束
  • 外键内部有一个带有NOTNULL约束的索引
  • 另外,通过使用“SET foreign\u key\u checks=0”命令,我们可以禁用外键,但它将禁用数据库的所有外键检查,而不是单个表,因此我希望它用于单个表
  • 我可以使用ALTERTABLE TABLE\u name disable ALL KEYS“命令禁用唯一索引
  • 因此,我有以下疑问:

  • 我可以禁用特定表的外键约束吗?禁用后,它也会在内部禁用索引,或者我必须删除它
  • 我可以用自动递增禁用主键,禁用后它也会在内部禁用唯一索引,或者我必须删除它,但我希望第一列自动递增,即主键,因为CSV文件没有第一列值
    有人能帮我解决这个问题吗,谢谢。

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

  • 如果导入数据的第一列的值为NULL,那么导入它将导致Mysql创建新的唯一主键的序列号。如果您删除自动递增主键,此功能将被禁用,并且您的数据将没有主键。围绕这一点有很多解决方法,但大多数方法都会比在导入期间打开主键耗费更多的时间和计算资源
    在从CSV文件导入更多数据之前禁用表中的键约束可能会加快导入速度,但如果您不能100%确定新导入的CSV数据没有违反键约束,则可能无法在导入后重新创建删除的键

  • 如果导入数据的第一列的值为NULL,那么导入它将导致Mysql创建新的唯一主键的序列号。如果您删除自动递增主键,此功能将被禁用,并且您的数据将没有主键。围绕这一点有很多解决方法,但大多数方法都会比在导入期间打开主键耗费更多的时间和计算资源
    语法是:ALTER TABLE TABLE_name DISABLE KEYS,它不禁用唯一索引语法是:ALTER TABLE TABLE_name DISABLE KEYS,它不禁用唯一索引