我从 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 '\%'
) 利用,如您在以下屏幕截图中看到的那样:
在 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
-c
switch 的意思是输出到 stdout,使用时必须将 stdout 结果指向某个地方-c