【问题标题】:How to speed up creating MySQL table from large CSV file?如何加快从大型 CSV 文件创建 MySQL 表的速度?
【发布时间】:2019-11-09 15:18:11
【问题描述】:

我目前正在使用 MySQL Workbench 通过导入一个大的 CSV 文件来创建一个表。 CSV 文件有大约 500 万条记录和 100 列。

但是,导入过程非常缓慢(该过程已经运行了两个小时)。我可能需要减少记录或列的数量,这并不理想,但如果它显着减少所需的时间可能是值得的。

哪个更可能减少导入时间:将记录数减半,或将列数减半? (与使用in this link 所述的 GUI 相比,是否有更快的导入方法?)

【问题讨论】:

  • 你能显示你导入的SHOW CREATE TABLE your_table 语句吗?还有一些来自 CSV 的行,所以我们感觉导入了什么?
  • 向导自动完成所有操作,无需我编写任何 SQL 语句。我无法显示 CSV,但它非常标准(字符串和数字,每个字段少于 30 个字符)。但是我在一个小时左右后设法导入了所有内容,所以我想我的问题已经解决了。

标签: mysql mysql-workbench


【解决方案1】:

您可以通过查询将 CSV 导入 MySQL:

LOAD DATA INFILE 'data.csv' 
INTO TABLE my_table 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

【讨论】:

  • 谢谢,试试这个。只是好奇,为什么它比使用 GUI 导入向导更快?
  • @wwl mysql-workbench 很可能在后台执行相同的LOAD DATA LOCAL INFILE 'data.csv' ... 。因为此查询要求 CVS 存在于 MySQL 服务器文件存储中,而 LOAD DATA LOCAL INFILE 不存在并且需要将文件从本地上传到服务器。
  • GUI 导入按顺序插入行。这可能非常慢。
猜你喜欢
  • 2019-11-24
  • 2021-04-17
  • 2018-12-09
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 2020-03-15
  • 1970-01-01
  • 2019-01-21
相关资源
最近更新 更多