我目前正在尝试导入一个大型CSV文件(14-15百万行),其中包含许多列(60),文件大小约为7 GB。
表中有一个主键,这可能会导致脚本变慢,但是我确实需要该主键。
我尝试将CSV分成较小的部分(每个100.000行),目前使用bash脚本导入CSV:
for f in *.csv
do
echo "Processing CSV: $f"
/usr/bin/mysql -u database_user --password=pass database_name -e "
LOAD DATA LOCAL INFILE '$f'
INTO TABLE database_name
FIELDS TERMINATED by ','
ENCLOSED BY '\"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
"
done
该脚本尚未完成,但是它已经运行了24多个小时。.我怀疑1400万条记录对于MySQL来说真的太多了,大约200万条记录变得非常慢(比如说大约100行p /第二)。我正在运行具有足够可用内存的专用服务器,并且导入运行时服务器负载也很稳定。
这是我的一些配置(禁用了日志bin,如果您需要更多配置,请告诉我):
max_connections = 250
connect_timeout = 5
wait_timeout = 600
max_allowed_packet = 32M
thread_cache_size = 128
sort_buffer_size = 4M
bulk_insert_buffer_size = 16M
tmp_table_size = 32M
max_heap_table_size = 32M
我可以做任何类型的表演吗?
编辑:
关于重复标记,我现在进行了以下更改:
导入似乎要快一些,但是主键索引似乎尚未更新。完成后我会抬起头来!
编辑2:
导入速度似乎更快,但是在记录了1300万条记录之后,导入速度确实很慢。还有70万条记录要走,我认为现在每2小时要有10万条记录。