【问题标题】:Load csv files into mysql faster or in parallel更快或并行将 csv 文件加载到 mysql 中
【发布时间】:2018-01-01 22:21:16
【问题描述】:

我有一个 mysql 表,其中包含一个主 auto_increment 键。

我有 500 个 csv 文件,每个文件大约 3gb 的数据和一列中的大部分数据。

目前我正在使用以下方法将文件加载到 mysql 中:

#!/bin/bash
for file in /files/*.csv
do
    mysql -e "load data local infile '$f' into table myTable FIELDS TERMINATED BY ',' 
    ENCLOSED BY '\"' escaped by '\"' IGNORE 1 LINES"  -u user -ppass
done

有什么方法可以提高性能?也许在插入时删除主键,然后再添加?或者有没有办法并行插入而不是一次插入一个文件?

【问题讨论】:

  • 您可以尝试遍历每一行并为每一行执行插入操作。它的性能可能会也可能不会比一次性负载好,但它可能值得一试。
  • 另外,就并行插入而言,我认为这不会有太大帮助,因为就引擎而言,处理步骤将是相同的,即相同的工作负载通过相同的通道,但我可能是错的

标签: mysql bash centos centos7


【解决方案1】:

从 5.0.17 版开始的新 MySQL Shell 具有用于 CSV、TSV 和 JSON 文件的并行批量加载程序。

【讨论】:

  • 您能详细说明一下吗?也许链接到它到底是什么/如何使用它?
  • 请参阅elephantdolphin.blogspot.com/2019/08/…,了解在 MySQL Shell 中使用新的并行批量加载程序实用程序的示例
猜你喜欢
  • 2023-04-01
  • 1970-01-01
  • 2016-04-17
  • 2015-11-12
  • 2014-01-19
  • 2015-01-10
  • 1970-01-01
  • 1970-01-01
  • 2015-04-07
相关资源
最近更新 更多