需要将大量 csv 文件插入数据库
Posted
技术标签:
【中文标题】需要将大量 csv 文件插入数据库【英文标题】:Larg set of csv files need to be inserted into a database 【发布时间】:2012-03-06 23:10:57 【问题描述】:我被要求在 CSV 文件上执行 csv -> mysql 插入。
他们有 20k 个 csv 文件,其中包含 100 到 100k 行数据。
这就是我认为我能做的:
在我的机器上,我可以使用一个简单的命令将所有文件合并为 1:
copy *.csv combined.csv
然后处理该文件,然后使用 php fgetcsv 处理该文件并将其插入数据库。
或者
我可以编写一个 php 程序来读取目录处理每个文件,并在完成后将其转移到另一个文件夹中。
有专用服务器
8gb 内存的好电脑
你有什么建议?
【问题讨论】:
无论是否合并文件,都想通过LOAD DATA INFILE
导入
你应该把它作为答案:)
不,因为如果这已经回答了您的问题,那么您的问题是重复的,应该关闭;)
【参考方案1】:
使用LOAD DATA INFILE。最好逐个文件插入数据文件。
LOAD DATA INFILE '/path/to/data.csv'
INTO TABLE `table`
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
以批处理模式运行 20k 个文件。在命令中输入密码以防止它询问。
#!/bin/bash
for f in /path/to/*.csv;
do
mysql -uroot -pPASSWORD DATABASE \
-e "LOAD DATA INFILE '$f'
INTO TABLE `table`
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'"
echo $f is imported ...
done;
【讨论】:
【参考方案2】:一个文件一个文件会更好。如果出现问题,这允许重新启动,而且所有文件是否都相同?
您可以使用 php 脚本生成 sql 命令并执行这些命令。
【讨论】:
以上是关于需要将大量 csv 文件插入数据库的主要内容,如果未能解决你的问题,请参考以下文章
通过 bigquery-python 库向 BigQuery 插入大量数据
我正在尝试在数据库中插入数据 .csv 文件 l 它会显示标题作为列记录吗? [关闭]