MySQL导入数据,存在外键约束不能导入数据的处理方式

8 篇文章 0 订阅
3 篇文章 1 订阅

我们通常导入数据脚本的时候会遇到如下错误:

1451 -Cannot delete or update a parent row: a foreign key constraint fails (...)

这是因为MySQL中设置了foreign key关联,造成无法更新插入或删除数据。可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。

首先登录mysql,禁用外键约束.

mysql> SET FOREIGN_KEY_CHECKS=0;

然后执行sql;

执行完sql操作之后,再启用外键约束

mysql> SET FOREIGN_KEY_CHECKS=1;

搞定。

如果要查看当前外键约束状态,可以执行如下命令

SELECT @@FOREIGN_KEY_CHECKS;

  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当需要导入大规模的数据时,我们需要采用一些有效的方法以确保这一过程的高效性。以下是一些导入百万级别数据的建议: 1.调整mysql参数 在导入数据之前,可以通过修改mysql的配置文件(my.cnf)中的参数以提高导入速度。如将innodb_flush_log_at_trx_commit参数改为2或0,可避免每次提交事务都进行同步写入,提高性能。还可以将innodb_buffer_pool_size参数增加以提高磁盘IO的效率。 2.使用LOAD DATA命令 使用LOAD DATA命令导入数据通常比使用INSERT语句更快。这个命令支持从本地文件或远程服务器导入数据,且无需建立索引和触发器。 3.分批次导入 将大型文件分成几个较小的文件,每个文件导入时使用LOAD DATA命令进行导入,减少每次导入数据量,可以有效地提高导入速度。 4.禁用外键约束和触发器 在导入数据集时,启用外键约束和触发器会给导入过程带来额外的消耗。所以我们可以将其禁用,导入完成后再重新启用。 5.利用并行处理 可以考虑并行处理多个导入任务。可以利用多个客户端同时向mysql服务器发送数据,以减少处理时间。 6.把表分成多个文件 可以将表分成多个文件,每个文件导入时使用LOAD DATA命令进行导入,进而提高导入速度。 以上这些方法可能会因不同版本而略有不同,但总体思路不会改变,可以大大提高mysql导入大量数据的速度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值