gpt4 book ai didi

mysql - csv 导入适用于微小的测试文件,不适用于实际文件,没有错误,mysql

转载 作者:行者123 更新时间:2023-11-28 23:56:58 25 4
gpt4 key购买 nike

我有一个很大的 .csv (300krows) 文件,称之为 medium.csv,我正试图将其导入到 MySQL 表中。当我在 medium.csv 上执行导入命令时,我在 mysql workbench 中得到反馈“0 行受影响”,没有警告,并且表不受影响。

在尝试排除故障时,我开始研究 csv 的迷你版本,我通过在 excel 中打开 medium.csv 创建它,然后将前 5 行剪切并粘贴到一个新文件 tiny.csv 中。效果很好:

DROP TABLE IF EXISTS USER_DATA;
CREATE TABLE USER_DATA (UID INT, INSTALL_DATE DATE, PLATFORM_TYPE VARCHAR(10), COUNTRY_TYPE VARCHAR(11));

LOAD DATA LOCAL INFILE 'E:\\Heather Data\\H Docs\\test\\tiny.csv'
into table USER_DATA
fields terminated by ',' enclosed by '"'
lines terminated by '\r\n'
ignore 1 lines
(uid,
@install_date,
platform_type,
country_type)
set
install_date = str_to_date(@install_date, '%d/%m/%Y');

当我在同一个文件夹中的 medium.csv 上运行它时,处理时间用完了,但没有任何反应,没有警告,目标表不受影响。

你能给我一些关于如何排除故障的提示吗?我真的很困惑为什么小文件有效而中等文件无效。

列数据类型错误或 medium.csv 文件格式是否会导致此行为?

如果我无法解决此方法的问题,是否可以使用其他导入方法?

感谢您提供的任何建议,

希瑟

最佳答案

最好运行以下命令来查看系统上事件的超时时间。

SELECT @@global.wait_timeout, 
@@global.interactive_timeout,
@@session.wait_timeout,
@@session.interactive_timeout;

如果它们设置得太低,例如 60(秒),那么在该时间段之后 mysql 将认为该操作花费的时间太长并终止它。因此,如果您在更新或加载语句中间,这本身就是一个事务,它将失败并且什么也不会发生(因为它是一个事务)。

在像 GoDaddy 这样的托管环境中,您的选择是减少任何一批的大小,因为您无法更改服务器配置。

在您作为 root 控制的系统上,可以对服务器环境进行更改以增加 mysql 允许完成长时间运行的查询的时间量。

选项

一个。 全局级别 表示所有新连接都继承超时值可以对/etc/my.cnf 进行更改

wait_timeout = 600
interactive_timeout = 600

这些是 10 分钟的值,只有在 mysql 重新启动后才会生效。

可以在不重启的情况下执行该编辑,但现在通过执行以下操作使其生效:

mysql -uroot -p -e"SET GLOBAL wait_timeout=600; SET GLOBAL interactive_timeout=600;"

B. 连接级调整在断开连接时消失。通常有利于进行更改和取消更改包装时间冗长的例程。

set @@wait_timeout=1000 -- session 等待超时的改变

在连接结束时,如果 session wait_timeout 被修改,则忘记它,并且值在重新连接时默认返回到全局。

关于mysql - csv 导入适用于微小的测试文件,不适用于实际文件,没有错误,mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31428809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com