解压 SQL 文件得到二进制文件

解压 SQL 文件得到二进制文件

我从 Linux 上的生产服务器创建并压缩了 SQL 转储(使用 bzip2)。

我想创建一个 shell 脚本来自动将其导入到我的开发环境(在 Mac OS 上)的数据库中。

文件转储.sql.bz2可以使用 Mac OS Archive Utility 手动解压。但是当我使用命令行(例如bzip2 -dck dump.sql.bz2或 )时bunzip2 -k dump.sql.bz2,sql 文件会转换为二进制文件,无法被 mysql ( ERROR at line 1: Unknown command '\%') 利用,如您在以下屏幕截图中看到的那样:

GUI 和 CLI bzip2 提取之间的比较

在 Mac 上提取 bz2 sql 文件而不损坏它的等效命令行是什么?也许这不是做我想要的事情的最佳方式?

答案1

好吧,我找到原因了。我的 SQL 转储被压缩了两次,但名称没有被压缩,转储.sql.bz2.bz2, 只是转储.sql.bz2。二进制文件是仅第一层的解压结果。Mac OS Archive Utility 更智能,因为它识别出这种双重压缩并恢复了原始 SQL 转储文件。

答案2

这对我有用。

bunzip2 < db.sql.bz2 | mysql -u root -p my_local_database

答案3

这将解决你的问题

bunzip2 -dk dump.sql.bz2 
# or 
bunzip2 -ck dump.sql.bz2 > myfile.sql

-cswitch 的意思是输出到 stdout,使用时必须将 stdout 结果指向某个地方-c

相关内容