Celeb Glow
updates | April 03, 2026

MySQL importing CSV files really slow

I am trying to import CSV files into a table, but it has been very slow. I have about 1000 files with a file size of 40 MB each. Whenever I try to import it, I can see with for example MySQL workbench that it is inserting in a rate of about 30 - 60 rows per second. It will take ages before al my files are processed. How can I speed this up? I have already modified the mysql.cnf file to the following config, which unfortunately does not speed it up:

/etc/mysql/conf.d/mysql.cnf

[mysqld]
innodb_buffer_pool_size=12G
innodb_io_capacity = 2000
innodb_read_io_threads = 48
innodb_thread_concurrency = 0
innodb_write_io_threads = 48
innodb_buffer_pool_size=12G
innodb_log_file_size = 512M
max_connections = 1000
max_allowed_packet = 128M
#key_buffer = 1000M
bulk_insert_buffer_size = 1024M
innodb_doublewrite = 0
innodb_flush_log_at_trx_commit = 2
key_buffer_size = 4000M

It does say that 12G is configured in InnoDB according to PHPMyAdmin, so I can safely confirm that the config at least works.

Specs in case needed:

OS: Ubuntu 18.04
CPU: 6 cores, 12 threads @ 4.5 GHz
RAM: 32 GB DDR4 @ 3.2 GHz
SSD: 1 TB NVME @ 3.5 GB/s Read & 3.3 GB/s Write
2

2 Answers

You should have a look at the LOAD DATA function of MySQL, or the mysqlimport tool.

Those two functions are reportedly 20-30 times faster than insert'ing one by one, which would bring you up to at least 500-1000 rows a second.

As you don't provide any information about your data format, it's hard to give a detailed use instruction for mysqlimport, which seems to be the most applicable tool in your situation.

It turned out that the file encoding was different between each file. Some files had UTF-8 encoding, some had ISO 8859-1 (Latin1) encoding, which caused a lot of programs to take ages to import due to (I think) converting it into another encoding. A 40 MB file now only takes about 6 seconds to import instead of 48 minutes.. Thanks @vidarlo for the suggestion of mysqlimport, which is certainly an improvement, but overall the time improvement is good enough for me!

1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy