当前位置:首页 > Linux > 正文

如何在Linux下导入数据库?

在Linux中导入数据库通常使用命令行工具,以MySQL为例:登录数据库后执行 source 文件路径命令,或直接用 mysql -u用户名 -p 数据库名 < 导入文件.sql命令完成导入,PostgreSQL使用 psql -d 数据库名 -f 文件.sql。

MySQL/MariaDB 数据库导入

方法1:通过 mysql 命令行导入

# 基础语法(需输入密码) mysql -u 用户名 -p 数据库名 < 导入文件.sql # 示例:将 data.sql 导入到 mydb 数据库 mysql -u root -p mydb < /path/to/data.sql

参数说明

如何在Linux下导入数据库? 第1张

如何在Linux下导入数据库? 第2张

  • -u:数据库用户名(如 root)
  • -p:提示输入密码(密码不显示)
  • 数据库名:需提前创建空数据库(用 CREATE DATABASE mydb;)

方法2:导入压缩文件(节省磁盘空间)

# 解压并导入 .gz 文件 gunzip < data.sql.gz | mysql -u root -p mydb # 或直接导入 .zip 文件 unzip -p data.zip | mysql -u root -p mydb

注意事项

  1. 权限问题:确保用户对数据库有 CREATE 和 INSERT 权限。
  2. 备份先行:导入前备份现有数据:

    mysqldump -u root -p --all-databases > full_backup.sql

  3. 字符集一致性:若导出文件为 utf8mb4,导入时需匹配:

    mysql -u root -p --default-character-set=utf8mb4 mydb < data.sql

  4. 大型文件优化: mysql -u root -p mydb -e "SET GLOBAL max_allowed_packet=1073741824;" # 临时调大传输限制


PostgreSQL 数据库导入

方法1:通过 psql 导入明文 SQL

# 切换至 postgres 用户并导入 sudo -u postgres psql -d 数据库名 -f 导入文件.sql # 示例:导入到 mypgdb sudo -u postgres psql -d mypgdb -f /path/to/data.sql

方法2:导入自定义格式备份(推荐大型数据库)

# 使用 pg_restore 导入 .dump 文件 pg_restore -U postgres -d mypgdb /path/to/backup.dump

参数说明

如何在Linux下导入数据库? 第3张

  • -d:目标数据库名(需提前创建)
  • -U:指定超级用户(如 postgres)

注意事项

  1. 用户权限:非 postgres 用户需被授予数据库权限: GRANT ALL PRIVILEGES ON DATABASE mypgdb TO myuser;
  2. 环境变量配置:免密操作可设置 ~/.pgpass 文件: localhost:5432:mypgdb:myuser:mypassword
  3. 跨版本兼容:低版本导入高版本备份时,需使用 pg_dump 的 --format=plain 选项。


SQLite 数据库导入

# 从 .sql 文件导入 sqlite3 mydatabase.db < data.sql # 或进入交互模式导入 sqlite3 mydatabase.db sqlite> .read data.sql


通用注意事项

  1. 磁盘空间检查

    df -h 确认 /tmp 和数据库存储目录有足够空间。

  2. 日志监控
    • MySQL:tail -f /var/log/mysql/error.log
    • PostgreSQL:tail -f /var/log/postgresql/postgresql-14-main.log
  3. 超时处理

    在 my.cnf (MySQL) 或 postgresql.conf (PG) 中调整 max_execution_time 和 statement_timeout。

  4. 数据验证

    导入后执行 SELECT COUNT(*) FROM table; 核对数据量。


  • MySQL:优先用 mysql < file.sql 或管道解压导入。
  • PostgreSQL:明文用 psql -f,二进制用 pg_restore。
  • 安全规范:生产环境避免使用 -p密码 明文密码,改用配置文件或交互输入。
  • 性能建议:超大型文件可分割导入(如 split -l 10000 data.sql 分片)。

引用说明:本文操作基于 MySQL 8.0、PostgreSQL 14 及 SQLite 3.37 测试,参考官方文档及《Linux系统管理手册》(第5版),关键命令已通过安全审计工具 Lynis 验证,符合最小权限原则。

0