本文由我司收集整编,推荐下载,如有疑问,请与我司联系mysql中用HEX和UNHEX函数处理二进制数据的导入导出2011/02/10 15914  在一次mysql的数据备份恢复的操作中,碰到一个问题:在使用sqlyog进行数据备份后,然后将数据在另外一个服务器上进行恢复,由于其中一个表中有varbinary字段,导致“’”分隔符被吞噬(由于二进制编码的问题,引号分隔符被当作了数据的一部分),从而使得数据不能被正常导入。
 采用了一些文本工具进行处理,都没有成功,有的虽然可以识别,但会自动的修改了其中的二进制编码的数据,有的则会插入其他的二进制的数据,导致仍然无法读取。
 于是考虑其他的手段:读取数据并拼写sql语句,然后进行导入。具体方法为: (1)导出时采用HEX函数读取数据,把二进制的数据转为16进制的字符串;  select HEX(binField) from testTable;
hex字符串是什么 (2)导入时采用UNHEX函数,把16进制的字符串转为二进制的数据导入库中;
  insert into testTable binField values(UNHEX(@hexstr));
 有以下的代码可以演示HEX和UNHEX的功能:
 SELECT HEX(‘this is    a test str’),查询的结果为:746869732069732061207465737420737472 SELECT UNHEX(‘746869732069732061207465737420737472’),查询的结果为:this is a test str
 还可以直接读取16进制的字符,在字符串前加0x前导:SELECT 0x746869732069732061207465737420737472,查询结果为:this is a test str
 另外,还可以采用二进制的导入导出的方式进行数据的备份恢复操作。这里不做讨论。
 tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。