【发布时间】:2012-01-12 18:06:53
【问题描述】:
我有一个大的 CSV 文件 (5.4GB) 数据。这是一张有 6 列很多行的表格。我想跨多个表将其导入 MySQL。此外,我必须在导入之前对数据进行一些转换(例如,解析一个单元格,并将这些部分输入到几个表值中等)。现在我可以做一个脚本进行转换并一次插入一行,但导入数据需要数周时间。我知道 MySQL 有 LOAD DATA INFILE,但我不确定如何或是否可以在 SQL 中进行所需的转换。
有什么建议吗?
【问题讨论】:
我有一个大的 CSV 文件 (5.4GB) 数据。这是一张有 6 列很多行的表格。我想跨多个表将其导入 MySQL。此外,我必须在导入之前对数据进行一些转换(例如,解析一个单元格,并将这些部分输入到几个表值中等)。现在我可以做一个脚本进行转换并一次插入一行,但导入数据需要数周时间。我知道 MySQL 有 LOAD DATA INFILE,但我不确定如何或是否可以在 SQL 中进行所需的转换。
有什么建议吗?
【问题讨论】:
根据我有限的经验,您不会希望将 Django ORM 用于此类事情。这将太慢了。我会编写一个 Python 脚本来操作 CSV 文件,使用 Python 的 csv 库。然后使用原生 MySQL 工具LOAD DATA INFILE 加载数据。
如果用于处理 CSV 文件的 Python 脚本太慢,您可以考虑用 C 或 C++ 编写该部分,假设您可以找到适合这些语言的合适的 CSV 库。
【讨论】: