注意: 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