在开发和运维中,经常需要在 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(需服务端路径权限)

这些命令覆盖了日常开发中常见的数据库迁移、表结构导出、数据备份等任务场景,建议熟练掌握并结合脚本使用。