mysql数据库备份-mysqldump导出工具,mysqlimport/source导入工具

注意: 1.在非高峰时段进行,以减少对生产环境的影响。确保有足够的磁盘空间来保存备份文件
2.在win与linux系统中要注意路径的书写,如
win:

备份: mysqldump -u 用户名 -p 数据库名> D:\XX\abc.sql 回车
输入数据库密码
导入: mysql -u 用户名 -p < D:\XX\abc.sql 回车
输入数据库密码

linux:

备份: mysqldump -u 用户名 -p 数据库名> /XX/abc.sql 回车
输入数据库密码
导入: mysql -u 用户名 -p < /XX/abc.sql 回车
输入数据库密码

相关工具位置

工具位置在mysql安装目录下的bin文件夹中.
使用工具时,在bin目录下进入命令行工具,输入相关命令

导出 mysqldump 工具

mysqldump 是 MySQL 提供的一个非常强大的命令行工具,用于备份数据库或表。它可以将数据库的内容导出成 SQL 文件(包括表结构与数据)

基本语法(导出为sql文件)

mysqldump [options] database_name [tables]

常用选项

  • -u 或 --user: MySQL 用户名。
  • -p 或 --password: MySQL 密码(输入命令后会提示输入密码)。
  • -P 或 --port: MySQL 服务器的端口号。
  • -h 或 --host: MySQL 服务器的主机名或 IP 地址。
  • -d 或 --no-data: 只导出表结构,不导出数据。
  • -t 或 --no-create-info: 不导出表结构,只导出数据。
  • –all-databases: 导出所有数据库。
  • –routines: 导出存储过程和函数。
  • –triggers: 导出触发器。
  • –events: 导出事件。
  • –single-transaction: 对于 InnoDB 表,在一个事务中完成导出,减少锁的使用。
  • –quick: 防止缓冲区溢出,适用于大表。
  • –lock-tables: 默认情况下会锁定表,此选项可以关闭此行为。
  • –lock-all-tables: 锁定所有表,即使在导出单个表时也是如此。
  • –flush-logs: 在导出之前刷新二进制日志。
  • –compress: 使用压缩传输数据。
  • –result-file: 指定输出文件名。
  • –add-drop-table: 在每个 CREATE TABLE 语句前添加 DROP TABLE 语句。
  • –skip-add-drop-table: 不添加 DROP TABLE 语句。
  • –skip-comments: 不输出注释。

示例

导出整个数据库
mysqldump -u username -p -h hostname -P portnumber database_name > backup.sql
导出单个表
mysqldump -u username -p -h hostname -P portnumber database_name table_name > backup.sql
导出多个表
mysqldump -u username -p -h hostname -P portnumber database_name table1 table2 > backup.sql
只导出表结构
mysqldump -u username -p -h hostname -P portnumber -d database_name > backup.sql
只导出表数据
mysqldump -u username -p -h hostname -P portnumber -t database_name > backup.sql
导出所有数据库
mysqldump -u username -p -h hostname -P portnumber --all-databases > all_databases_backup.sql
使用单个事务导出(InnoDB)
mysqldump -u username -p -h hostname -P portnumber --single-transaction database_name > backup.sql
不锁定表
mysqldump -u username -p -h hostname -P portnumber --lock-tables=false database_name > backup.sql
导出到文本文件
mysqldump -u username -p -h hostname -P portnumber --tab=/path/to/directory database_name

导入

mysql命令行工具导入(导入sql文件)

基本语法

mysql-u 用户名 -p -h 服务器ip -P 端口 数据库名> 文件路径

mysqlimport导入工具 (导入CSV文件)

MySCLimport是MysQL数据库中的一个命令行工具,用于将数据从外部文件导入MySQL数据库中的表中。

基本语法

mysqlimport -u root -p -h 127.0.0.1 -P 3306 database_name E:\Desktop\china_area.csv   

注意事项:

  • 数据库中要事先建表;
  • csv文件名与表名要对应;
  • csv文件第一行是标题时要跳过;
  • 执行语句提示
    “mysqlimport: Error: 1290, The MySQL server is running with the --secure-file-priv option so it cannot execute this statement,” 时需要修改mysql权限配置: MySQL8.0 在win7中出现secure_file_priv值为NULL的解决办法
  • 如果您正在导入一个非常大的文件,可能需要一段时间才能完成。确保在非高峰时段执行导入操作,以减少对生产环境的影响。

常用选项

  • -u 或 --user: MySQL 用户名。
  • -p 或 --password: MySQL 密码(输入命令后会提示输入密码)。
  • -P 或 --port: MySQL 服务器的端口号。
  • -h 或 --host: MySQL 服务器的主机名或 IP 地址。
  • –fields-terminated-by: 字段之间的分隔符,默认为逗号 (,).
  • –lines-terminated-by: 行之间的分隔符,默认为换行符 (\n).
  • –ignore-lines: 忽略文件中的前几行,通常用于忽略表头。
  • –local: 表明数据文件位于客户端机器上,而不是服务器端。
  • –use-wildcards: 允许使用通配符来指定多个文件。
  • –fields-optionally-enclosed-by: 字段的包围字符,默认为空。
  • –fields-escaped-by: 转义字符,默认为 .
  • –columns: 指定要导入的列,可以是列名或列号。
  • –fields-enclosed-by: 字段的包围字符,默认为空。
  • –replace: 如果表中存在重复的主键或唯一索引,则使用 REPLACE 语句替换现有行。
  • –ignore: 如果表中存在重复的主键或唯一索引,则使用 IGNORE 语句忽略现有行。
  • –verbose: 显示详细的进度信息。
  • –max-rows: 每次导入的最大行数。
  • –delimiter: 与 --fields-terminated-by 同义。
  • –line-terminator: 与 --lines-terminated-by 同义。
  • –skip-column-names: 指示第一行不包含列名。
  • –fields-optional: 与 --fields-optionally-enclosed-by 同义。

示例

假设你有一个名为 data.csv 的 CSV 文件,其中包含以下内容:
id,name,age
1,John Doe,30
2,Jane Smith,28

要将这个文件导入到名为 mydatabase 的数据库中,并插入到名为 users 的表中,你可以使用以下命令:
mysqlimport -u username -p -h hostname -P portnumber mydatabase data.csv

如果 CSV 文件中的字段分隔符是逗号,并且每一行以换行符结尾,可以使用以下命令:
mysqlimport -u username -p -h hostname -P portnumber --fields-terminated-by=',' --lines-terminated-by='\n' mydatabase data.csv
如果你的 CSV 文件的第一行包含列名,并且你想忽略这一行,可以使用 --ignore-lines 选项:
mysqlimport -u username -p -h hostname -P portnumber --ignore-lines=1 mydatabase data.csv

如果你的 CSV 文件中字段被双引号包围,并且你想要处理这种情况,可以使用 --fields-enclosed-by 选项:
mysqlimport -u username -p -h hostname -P portnumber --fields-enclosed-by='"' mydatabase data.csv
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值