MySQL blob用bash文件。为什么这会破坏我的数据?

时间:2016-08-03 17:16:04

标签: mysql linux bash shell blob

我处于无法使用MySQL Dump的情况。这是一个很长的故事,但简而言之,由于与VMWare快照相关的i / o问题,服务器崩溃了。

因此,我不得不求助于编写脚本来尝试通过记录提取我的二进制数据记录。

这是我尝试过的一个例子:
mysql -u root -pPASSWORD --max-allowed-packet=1G -N -e 'select version_binary FROM version_binary WHERE version_id = 100' my_database > my_file

这会生成一个大致(不完全)正确大小的文件,但该文件已损坏。 的为什么吗

如果我在查询中转换为十六进制:
mysql -u root -pPASSWORD --max-allowed-packet=1G -N -e 'select HEX(version_binary) FROM version_binary WHERE version_id = 100' my_database > my_file.hex

然后使用:
xxd -r -p my_file.hex output.bin

它有效。

不幸的是,使用hex会消耗更多的空间并且需要更长的时间(我正在处理500GB的数据和大约1/2万条记录)所以我真的想让直接的二进制方法起作用。

修改 经过一番进一步的调查后,似乎腐败的二进制文件在整个过程中都有额外的影响。 The version on the left is not corrupt (extracted as hex and converted to binary) the version on the right is corrupt (extracted directly).

0 个答案:

没有答案