hive 表中有一些字符串,我使用转换方法替换一些字符,我的映射器脚本如下所示:
<?php
$strFrom = "\7";
$strTo = "\1"; // "|" it works well
$fd = fopen("php://stdin", "r");
while($line = fgets($fd)){
$outStr = str_replace($strFrom, $strTo, $line);
print $outStr;
}
fclose($fd);
我的 hive sql 是这样的:
select transform (value)
using 'home/php/bin/php -c home/php/etc/php.ini replace.php'
as (v1 string)
from test_tbl
实际上我尝试将字符串从“”替换为“”,但我发现它似乎替换正确,但它只输出第一列。像这样的一个输入:
a\7b\7c\7d
然后输出如下:
a
是的,只有一栏!
如果我将其替换为“|”,则会输出:
a|b|c|d
所以我很困惑,为什么 hive 必须用“”分割字符串?我怎样才能禁止它?我只想得到:
a\1b\1c\1d
这里找到了答案。