2
当我运行查询#1:如何获得选择输出转义“ 0”字符
SELECT * FROM $TABLE INTO OUTFILE $FILE CHARACTER SET utf8 FIELDS ESCAPED BY '\\\\' TERMINATED BY '|';
有是输出,因为这一个字段值:
blah\0
我想在不使用INTO OUTFILE
的情况下获得相同的输出。
查询#2用Perl代码:
$query = $db->prepare("SELECT * FROM $TABLE");
$query->execute;
open(FILE_OUT, ">$FILE");
然而,相同的列的上方被输出作为
blah
所以\0
字符(ASCII NUL)被不同地输出。如何修改查询#2以输出blah\0
?
修改可以在MySQL查询或Perl中进行。该列的整理是utf8_general_ci。我试过使用CONVERT($column using utf8)
但仍显示blah
,我不知道如何在输出时将其应用于每个表格的每一列。
更新:
此Perl代码工作在转义NUL字符。
$row =~ s/\0/\\0/g;
但也有许多其他MySQL的特殊字符,有没有办法一下子逃脱他们所有,而不是处理它们一个接一个?
你会在[本帖]中找到很多相关信息(http://stackoverflow.c OM /问题/ 881194 /怎么办-I-转义特殊字符,在MySQL的)。要打印NUL,你可以使用[pack](http://perldoc.perl.org/functions/pack.html)。参见教程[perlpacktut](http://perldoc.perl.org/perlpacktut.html)。最后,你总是可以用整个字符串的正则表达式来反斜杠,但这可能不会削减它。 – zdim