在开发和运维中,经常需要在 SQLite 和 MySQL 之间导入导出数据。本篇总结这两个数据库系统的常用导入导出命令,涵盖整库和单表操作,适用于备份、迁移和初始化场景。
✅ SQLite3 命令详解
导出整个数据库为 SQL 文件
sqlite3 data.db .dump > backup.sql
data.db
是数据库文件名;.dump
会导出数据库结构 + 全部数据;- 生成的
backup.sql
可用.read
或<
命令导入。
导出单个表为 SQL 文件
sqlite3 data.db ".dump users" > users.sql
只导出 users
表的数据和结构。
导入 SQL 文件到 SQLite 数据库
sqlite3 data.db < backup.sql
或者交互模式下:
sqlite3 data.db
sqlite> .read backup.sql
导出为 CSV 文件
sqlite3 data.db
sqlite> .headers on
sqlite> .mode csv
sqlite> .output users.csv
sqlite> SELECT * FROM users;
说明:
.headers on
:写出表头;.mode csv
:设置导出为 CSV 格式;.output
:指定输出文件;SELECT
:执行查询写入文件。
从 CSV 导入数据
sqlite3 data.db
sqlite> .mode csv
sqlite> .import users.csv users
⚠️ 注意:.import
的目标表必须已存在。
✅ MySQL 命令详解
导出整个数据库
mysqldump -u root -p mydb > backup.sql
参数说明:
-u root
:用户名;-p
:提示输入密码;mydb
:要导出的数据库名。
导出单个表
mysqldump -u root -p mydb users > users.sql
只导出 users
表的数据和结构。
导入 SQL 文件到 MySQL
mysql -u root -p mydb < backup.sql
或在交互模式中执行:
mysql -u root -p
mysql> USE mydb;
mysql> SOURCE /path/to/file.sql;
导出表为 CSV(仅限服务器路径)
SELECT * FROM users
INTO OUTFILE '/tmp/users.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
⚠️ 仅能导出到服务器具有写权限的路径。
从 CSV 导入数据
LOAD DATA INFILE '/tmp/users.csv'
INTO TABLE users
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
🧠 总结对比表
操作 | SQLite3 | MySQL |
---|---|---|
导出整库 | .dump > file.sql |
mysqldump db > file.sql |
导出单表 | .dump table |
mysqldump db table > file.sql |
导入 SQL | .read file.sql / < file.sql |
mysql db < file.sql |
导出 CSV | .mode csv + SELECT |
SELECT INTO OUTFILE |
导入 CSV | .import file.csv table (需预建表) |
LOAD DATA INFILE (需服务端路径权限) |
这些命令覆盖了日常开发中常见的数据库迁移、表结构导出、数据备份等任务场景,建议熟练掌握并结合脚本使用。