常用数据库数据导入导出(备份和恢复)操作文档

常用数据库数据导入导出(备份和恢复)操作文档

说明:实际开发中,我们经常遇到需要备份数据库数据,恢复数据库数据;或者不同环境之间同步数据、用已有环境数据搭建新环境的情况,此时就需要用到数据库的导出和导入(备份和恢复),这里记录一下常用数据库的导入导出操作。

PostgreSQL

数据导出

pg_dump是PostgreSQL数据库的一个实用工具,用于备份单个数据库。它可以将数据库的内容导出为SQL脚本文件,该文件可以在以后的时间点被重新加载到数据库中,以恢复数据。pg_dump可以导出数据的结构(模式)以及数据本身

使用 pg_dump 的基本语法是:

css 复制代码
pg_dump [OPTION]... [DBNAME]

其中:

  • [OPTION]... 是可选的参数,用于指定备份的各种选项。
  • [DBNAME] 是要备份的数据库名称。如果省略,它会使用环境变量 PGDATABASE 的值,或者默认到名为 "postgres" 的数据库。

以下是一些常用的 pg_dump 参数:

  • -U USERNAME:指定连接到数据库的用户名。
  • -h HOSTNAME:指定要连接的 PostgreSQL 服务器的主机名或 IP 地址。
  • -p PORT:指定要连接的 PostgreSQL 服务器的端口号。
  • -d DBNAME:指定需要备份的数据库名。
  • -f FILE:将输出写入指定的文件而不是标准输出。
  • -F FORMAT:指定输出格式,例如 "p" 表示纯文本格式,"c" 表示自定义格式,"t" 表示 tar 格式等。
  • -v:显示详细模式,输出更多信息。
  • --schema-only:只导出模式,不导出数据。
  • --data-only:只导出数据,不导出模式。

导出数据库

复制代码
pg_dump -U user_name -d db_name -f db_name_bak.sql

导出多表方式一

复制代码
pg_dump -U user_name -d db_name -t tb_1 -t tb_2 -f db_name_bak.sql

导出多表方式二

arduino 复制代码
pg_dump -U user_name -d db_name -t "tb_1 | tb_2" -f db_name_bak.sql

数据导入

在需要恢复数据时,可以使用psql工具将备份的SQL脚本重新加载到数据库中

命令:

css 复制代码
psql -h host_name -p port -U user_name -W -d db_name -f db_name_bak.sql

例:

css 复制代码
psql -h 10.64.66.66 -p 15432 -U postgre -W -d user_data -f user_data.sql

注:导入数据之前需备份原数据

css 复制代码
pg_dump -h 10.64.66.66 -p 15432 -U postgre -W -d user_data -f user_data.sql

MySQL

数据导出

mysqldump 是 MySQL 数据库的备份工具。它允许用户导出数据库的结构和内容到一个 SQL 文件,该文件之后可以使用 mysql 命令行工具或其他 MySQL 客户端来恢复数据库。

使用 mysqldump 的基本语法是:

css 复制代码
mysqldump [options] database [tables]  

mysqldump [options] --databases database1 [database2 ...]  

mysqldump [options] --all-databases

其中:

  • [options] 是可选的参数,用于指定备份的各种选项。
  • database 是要备份的数据库名称。
  • [tables] 是可选的,指定要备份的数据库中的特定表。

一些常用的 mysqldump 选项包括:

  • -u USERNAME:指定连接到数据库的用户名。
  • -p:提示输入用户的密码,也可以直接在 -p后面跟密码,如 -pYourPassword,但是这样做可能会留下安全隐患。
  • -h HOSTNAME:指定要连接的 MySQL 服务器的主机名或 IP 地址。
  • -P PORT:指定要连接的 MySQL 服务器的端口号。
  • -B 或 --databases:后面跟要备份的数据库名列表,用于备份多个数据库。
  • -d 或 --no-data:只导出数据库结构,不导出数据。
  • --extended-insert:使用多行 INSERT 语句格式,这可以提高恢复速度。
  • --single-transaction:对于存储引擎支持事务的表(如 InnoDB),此选项可以在单个事务中完成整个备份过程,确保备份的一致性。
  • --quick:当导出大表时,强制 mysqldump 在输出中每次写入一行,这有助于加速在某些情况下的导出过程。
  • --add-drop-table:在每个 CREATE TABLE 语句之前添加 DROP TABLE 语句,这样当导入备份时,会先删除表再创建。
  • --add-drop-database:在每个数据库导出之前添加 DROP DATABASECREATE DATABASE 语句。
  • --result-file=FILE:将输出写入指定的文件而不是标准输出。
css 复制代码
mysqldump -u user_name -p db_name > db_name_bak.sql

执行此命令后,系统会提示你输入用户的密码。

数据导入

命令:

css 复制代码
mysql -u user_name -p db_name < db_name_bak.sql

例:

复制代码
mysql -uroot -h 10.64.66.66 -p123456 db_name < db_name.sql

注:导入数据之前需备份原数据

复制代码
mysqldump -uroot -h 10.64.66.66 -p123456 db_name > db_name.sql

Mariadb

数据导出

命令:

复制代码
mysqldump -h127.0.0.1 -uroot -p123456 db_name > db_name.sql

数据导入

命令:

复制代码
mysql -uroot -h host -p123456 db_name < db_name.sql

例:

复制代码
mysql -uroot -h 10.64.66.66 -p123456 db_name < db_name.sql

注:导入数据之前需备份原数据

mysqldump -uroot -h 10.64.66.66 -p123456 db_name > db_name.sql

MongoDB

数据导出(备份)

命令:

复制代码
mongodump -h ip:port -u usernamme -p password -d database -o backuppath

例:

bash 复制代码
mongodump -h 10.11.11.11:27017 -u root -p root -d test -o D:/DevTool/MongoDB/backup

数据导入(恢复)

命令:

复制代码
mongorestore -h ip:port -d database backuppath

例:

bash 复制代码
mongorestore -h 127.0.0.1:27017 -d test D:/DevTool/MongoDB/backup/test

这样就把10.11.11.11:27017的test库,同步到了本地数据库,这种方式不需要停止服务且会同步索引(基于4.4.20版本)

相关推荐
hrrrrb40 分钟前
【Spring Security】Spring Security 概念
java·数据库·spring
心止水j44 分钟前
spark
javascript·数据库·spark
xujiangyan_2 小时前
Redis详解
数据库·redis·缓存
摇滚侠3 小时前
Spring Boot 3零基础教程,IOC容器中组件的注册,笔记08
spring boot·笔记·后端
Y编程小白5 小时前
PostgreSQL在Linux中的部署和安装教程
数据库·postgresql
程序员小凯5 小时前
Spring Boot测试框架详解
java·spring boot·后端
你的人类朋友6 小时前
什么是断言?
前端·后端·安全
程序员小凯7 小时前
Spring Boot缓存机制详解
spring boot·后端·缓存
TiAmo zhang7 小时前
SQL Server 2019实验 │ 数据库和表的创建、修改与删除
数据库·oracle
i学长的猫7 小时前
Ruby on Rails 从0 开始入门到进阶到高级 - 10分钟速通版
后端·ruby on rails·ruby