我只是想知道我们是否可以在批处理模式下执行二进制文件。我知道可以使用mysql < batch-file
以批处理模式执行文本文件。
这种功能的一个可能动机可能是,如果您要从程序创建sql
文件,那么您可能希望以二进制模式进行读/写,因为它很快。在mysql
中是否存在任何此类方式,我只是好奇!!
答案 0 :(得分:2)
mysql生成二进制日志,通常用于复制。你可以生成一个虚假的复制日志,并说服mysql加载它,虽然这很糟糕。通常使用mysqlbinlog:
将复制日志加载到mysql中mysqlbinlog replication_log | mysql
在执行之前将二进制复制日志转换为文本文件。
请注意,执行sql几乎肯定比解析它慢得多,特别是在生成它时。所以你几乎肯定会优化错误的东西。
答案 1 :(得分:1)
您可能希望尝试使用--hex-blob
的{{1}}选项来创建纯文本的转储文件。通常你会这样做:
mysqldump
稍后你会恢复:
mysqldump --hex-blob ... | gzip -9 > backup.sql.gz
在这两种情况下,gunzip -dc backup.sql.gz | mysql ...
表示连接到数据库所需的命令行选项。
这不是加载大型数据库的最有效方法,但它在实践中运行良好。