如何解决在PLPGSQL / Orafce
从Oracle转换后,我正在使用PL / pgsql和Orafce。在一个函数中,我正在写一个文件。我想用latin1编码编写。我的数据库在UTF8中。
有convert
个函数,但我想我错过了一些事情,因为我似乎找不到用例。
convert('testé','UTF8','latin1') ==> in BYTEA test\351
问题在于此函数返回bytea
。我如何获得text
?
解决方法
我认为您实际上需要使用convert_to
函数将text
从数据库编码转换为以不同编码编码的bytea
:
SELECT convert_to('testé','LATIN1');
convert_to
--------------
\x74657374e9
(1 row)
您不能使结果成为text
,因为该字节序列不是有效的UTF-8编码的字符串,并且PostgreSQL对这种数据损坏不容忍。
不幸的是,orafce似乎没有提供将二进制数据写入文件的功能,但是也许COPY
可以帮助您:
COPY (SELECT textdata FROM texttable ORDER BY something)
TO 'latin1file' (ENCODING 'LATIN1',FORMAT 'csv');
唯一的缺点是COPY
会转义某些字符,例如"
和,
,因此您可能需要选择字符串中不出现的分隔符或分隔符。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。