如何在Linux下导入数据库?

如何在Linux下导入数据库?

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

优惠价格:¥ 0.00
当前位置:首页 > 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

参数说明

  • -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. 权限问题:确保用户对数据库有 CREATEINSERT 权限。
  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

参数说明

  • -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_timestatement_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