MySQL 导入数据
用 mysql 客户端或 source 执行 SQL 文件,LOAD DATA 灌大文本。
Key Points小数据用 mysql < file.sql;百万行大文件用 LOAD DATA INFILE 最快。
执行 SQL 文件
Shell
mysql -u root -p shop < shop.sql
# 或在客户端内
mysql> source /path/to/shop.sql;Output
Query OK, 0 rows affected (0.05 sec)
...LOAD DATA 批量灌入
SQL
LOAD DATA INFILE '/var/lib/mysql-files/users.csv'
INTO TABLE users
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(username, age);Output
Query OK, 1000000 rows affected (4.21 sec)For huge files
LOAD DATA INFILE is an order of magnitude faster than row-by-row INSERT. If the file is on the client, use LOAD DATA LOCAL INFILE (requires local_infile enabled).执行 SQL 文件
Shell
mysql -u root -p shop < shop.sql
# 或在客户端内
mysql> source /path/to/shop.sql;Output
Query OK, 0 rows affected (0.05 sec)
...LOAD DATA 批量灌入
SQL
LOAD DATA INFILE '/var/lib/mysql-files/users.csv'
INTO TABLE users
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(username, age);Output
Query OK, 1000000 rows affected (4.21 sec)灌入大文件时
LOAD DATA INFILE 比逐行 INSERT 快一个数量级。若文件在客户端机器而非服务端,用 LOAD DATA LOCAL INFILE(需服务端开启 local_infile)。