「MySQL」- mysql | 命令行工具

认识

官网:
文档:https://dev.mysql.com/doc/refman/8.4/en/mysql.html
仓库:

组成

WIP

构建

WIP

性质

–force | Continue even if an SQL error occurs

# 05/25/2025 TDSQL-C MySQL, mysql 8.0 使用 –force 选项,再遇到某些 /*! SET … 语句时,仍旧会退出。或是我们操作的问题。

–one-database, -o | Ignore statements except those that occur while the default database is the one named on the command line.

# 05/26/2025 当使用该选项时,需要其行为模式。
https://dev.mysql.com/doc/refman/8.4/en/mysql-command-options.html

应用

当导入数据时,忽略 INSERT / SET 语句

DeepSeek / 通过 mysql 导入数据时,如何忽略所有 insert 语句
DeepSeek / 通过 mysql 导入数据时,如何忽略所有 /*! 语句

我们暂 05/25/2025 未找到通过命令行选项忽略 INSERT 语句的方法。针对其他大部分方法,多是预处理 .sql 文件,移除 INSERT 语句:

sed '/^INSERT/d' your_file.sql | mysql -u username -p database_name
grep -v "^INSERT" your_file.sql | mysql -u username -p database_name

grep -v "^INSERT" your_file.sql > your_file.sql.without-insert
mysql -u username -p < your_file.sql.without-insert

针对某些数据库产品(例如,TDSQL-C MySQL、……),当导入数据时,针对 /*! SET … 语句,亦将导致错误。我们使用相似的方法处理:

grep -v -E "^\/\*\!" your_file.sql > your_file.sql.without-set
mysql -u username -p < your_file.sql.without-set

当导入数据时,仅导入特定数据库

DeepSeek / 在某个 MySQL 逻辑备份中,包含多个数据库的数据备份。在恢复数据时,我们希望仅恢复某些库,该如何实现?

方案一、预处理 .SQL 文件

针对我们的场景,被导入数据来自数据库逻辑备份,所以该 .sql 文件格式较为“规范”,能够通过 sed grep 工具处理,截取并导出出范围内的 .sql 文件。

方案二、通过 mysql –one-database 选项

参考

WIP