运行查询#1时:
SELECT * FROM $TABLE INTO OUTFILE $FILE CHARACTER SET utf8 FIELDS ESCAPED BY '\\\\' TERMINATED BY '|';
有一个字段值输出为:
blah\0
我试图得到相同的输出不使用 INTO OUTFILE
.
用perl代码查询#2:
$query = $db->prepare("SELECT * FROM $TABLE");
$query->execute;
open(FILE_OUT, ">$FILE");
但是,上面的列输出为
blah
所以 \0
字符(ascii nul)的输出方式不同。如何将查询#2修改为输出 blah\0
?
修改可以在mysql查询或perl中进行。列的排序规则是utf8\u general\u ci。我试过用 CONVERT($column using utf8)
但它仍然显示 blah
,并且我不确定在输出时如何将它应用于每个表的每一列。
更新:
这段perl代码用于转义nul字符。
$row =~ s/\0/\\0/g;
但是mysql还有很多其他的特殊字符,有没有一种方法可以一次将它们全部转义,而不是逐个处理它们呢?
1条答案
按热度按时间yk9xbfzb1#
数据库句柄的quote方法应该能够引用任何特殊字符:
在我的mysql版本中:
如果我通过管道
hexdump -C
我们得到