gpt4 book ai didi

python - 使用不寻常的分隔符将大型 csv (175 GB) 导入 MySQL 服务器

转载 作者:太空宇宙 更新时间:2023-11-03 11:28:38 26 4
gpt4 key购买 nike

我有一个 175 GB 的 csv,我正试图将其导入 MySQL。

表格已设置并格式化。

问题是,csv 使用非正统的定界符和行分隔符(都是 3 个字符串,@%@ 和 @^@)。

经过大量试验和错误后,我能够在 HeidiSQL 中启动进程,但它会卡住并且从未实际填充任何数据。

理想情况下,我想使用 Python,但解析器只接受 1 个字符的行分隔符,这让这很棘手。

有没有人有任何关于让它工作的提示?

最佳答案

MySQL LOAD DATA 语句将处理具有多个字符分隔符的 csv 文件

https://dev.mysql.com/doc/refman/5.7/en/load-data.html

我希望是这样的:

LOAD DATA LOCAL INFILE '/dir/my_wonky.csv' 
INTO TABLE my_table
FIELDS TERMINATED BY '@%@'
LINES TERMINATED BY '@^@'
( col1
, col2
, col3
)

我会使用 .csv 文件的一个非常小的子集并将其加载到测试表中,只是为了让它正常工作,进行必要的调整,验证结果。

我还想将负载分解为更易于管理的 block ,并避免耗尽 ibdata1 文件中的回滚空间。我会使用类似 pt-fifo-split(Percona 工具包的一部分)的东西将文件分成一系列单独的加载,但不幸的是,pt-fifo-split 不提供指定行分隔符的方法。要使用它,我们必须预处理文件,替换现有的换行符,并将行分隔符 @^@ 替换为换行符。

(如果我必须一次加载整个文件,我会把它作为临时表加载到 MyISAM 表中,而不是 InnoDB 表中。而且我会有一个单独的进程来复制行 (以合理大小的 block )从 MyISAM 暂存表到 InnoDB 表。)

关于python - 使用不寻常的分隔符将大型 csv (175 GB) 导入 MySQL 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51897241/

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