本文档说明如何在 MySQL 中导入 SQL 和 CSV 数据,包含两种常见方式:
mysql 导入适用于本地测试环境,也适合日常开发场景。
在 MySQL 中,常见的导入文件大致有以下几种:
通常包含:
CREATE DATABASE(可选)USE 数据库名CREATE TABLEINSERT INTO适合:
只包含:
CREATE TABLE适合:
只包含:
INSERT INTO ...适合:
通常只包含:
适合:
注意:
导入通常使用 mysql 命令。
基础格式:
mysql -h 主机 -P 端口 -u 用户 -p 数据库名 < 导入文件.sql
testdbmysql -h 127.0.0.1 -P 3306 -u root -p testdb < testdb.sql
适合:
CREATE DATABASE如果导出时用了 --databases,SQL 里可能已经包含:
CREATE DATABASEUSE testdb这时可直接这样导入:
mysql -h 127.0.0.1 -P 3306 -u root -p < testdb_full.sql
说明:
如果你的 SQL 文件里没有建库语句,需要先手动创建数据库。
mysql -h 127.0.0.1 -P 3306 -u root -p -e "CREATE DATABASE testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
然后执行:
mysql -h 127.0.0.1 -P 3306 -u root -p testdb < testdb.sql
-e执行一条 SQL 后退出。
示例:
mysql -h 127.0.0.1 -P 3306 -u root -p -e "SHOW DATABASES;"
--default-character-set指定连接字符集。
示例:
mysql -h 127.0.0.1 -P 3306 -u root -p --default-character-set=utf8mb4 testdb < testdb.sql
建议:
--database显式指定目标数据库。
示例:
mysql -h 127.0.0.1 -P 3306 -u root -p --database=testdb < testdb.sql
和直接写数据库名效果接近,只是更明确。
mysql -h 127.0.0.1 -P 3306 -u root -p < testdb_full.sql
mysql -h 127.0.0.1 -P 3306 -u root -p --default-character-set=utf8mb4 testdb < testdb_data.sql
mysql -h 127.0.0.1 -P 3306 -u root -p -e "CREATE DATABASE test_import CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"mysql -h 127.0.0.1 -P 3306 -u root -p --default-character-set=utf8mb4 test_import < users_data.sql
常见步骤:
File / Import,或 Run SQL File.sql 文件如果包含:
如果不包含:
如果包含:
DROP TABLE IF EXISTS users;
那么导入时可能会覆盖原表。
.csv 文件常见值:
, 逗号; 分号\t 制表符如果选错,字段会错位。
常见值:
如果编码不对,中文可能乱码。
含义:
通常建议:
含义:
需要注意:
如果目标是把一个 MySQL 库完整迁到另一处,优先使用:
mysqldump 导出 SQLmysql 导入 SQL因为:
如果只是:
那么 CSV 更方便。
无论导入 SQL 还是 CSV,涉及中文、emoji、多语言文本时,尽量明确指定:
utf8mb4--default-character-set=utf8mb4如果 SQL 文件中有:
DROP TABLEDROP DATABASE导入时会覆盖原有对象。
因此在正式环境中,导入前最好先检查 SQL 文件内容。
原因:
CREATE DATABASE解决:
--databases原因:
解决:
原因通常是:
解决:
utf8mb4原因:
解决:
mysql -h 127.0.0.1 -P 3306 -u root -p < testdb_full.sql
mysql -h 127.0.0.1 -P 3306 -u root -p --default-character-set=utf8mb4 testdb < testdb_data.sql
mysql -h 127.0.0.1 -P 3306 -u root -p -e "CREATE DATABASE testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"mysql -h 127.0.0.1 -P 3306 -u root -p --default-character-set=utf8mb4 testdb < testdb.sql