我想从oracledb导出数据,然后使用bash脚本进行处理。 但是输出可能包含特殊字符(如换行符等),这使得处理普通文件变得很困难。 所以我尝试使用
对相关字符串进行base64编码UTL_ENCODE.base64_encode(utl_raw.cast_to_raw(...))
输出文件将包含如下行:
SOME_TEXT | base64_encoded_string
这使我可以轻松处理文本文件,但解码过程不能很好地输出是胡言乱语:
while read line
do
name=${line%|*}
str64=${line#*|}
str_dec=`echo ${str64} | base64 --decode`
echo "${name} : ${str_dec}"
done <${export_file}
这可能是因为字符串首先在oracle中被转换为raw。
那我怎样才能正确解码字符串呢?
或者,我如何编码(保护)可以轻松解码的字符串,这也会有所帮助?
btw。:bash在cygwin中运行。
答案 0 :(得分:0)
其实这很简单...... 我只需将结果转换回varchar2
replace(
replace(
utl_raw.cast_to_varchar2(
UTL_ENCODE.base64_encode(utl_raw.cast_to_raw(...))
), chr(10), ''
), chr(13), ''
)
它解码得很好,不得不从结果中删除cr / lf换行符。