【发布时间】:2012-08-16 16:56:01
【问题描述】:
有人知道如何在字段类型为 «clob» 的表中插入一个数据,在使用 utl_file 后,该数据将在十六进制编辑器中的 FF FF FF FF 等结果文件中查找? 我做了下一个(以及许多其他尝试):
INSERT INTO DATA.FILE_TAB
(A1 --CLOB type field
)
select
LPAD(chr(to_number('FF', 'XX')), 22, chr(to_number('FF', 'XX'))) A1
from DUAL;
插入后,我使用 utl_file (put_line) 在目录中创建一个 .dat 文件。当我打开它时,我看到了任何东西,但不需要字符。 =(在十六进制编辑器中,我需要通过link 看到符号 FF FF FF FF FF FF。
【问题讨论】:
-
运行以下查询:
SELECT * FROM NLS_DATABASE_PARAMETERS并告诉我它为PARAMETER_NAME = 'NLS_CHARACTERSET'和PARAMETER_NAME = 'NLS_SAVED_NCHAR_CS'返回什么。 -
NLS_CHARACTERSET = AL32UTF8 和 NLS_NCHAR_CHARACTERSET = AL16UTF16
-
请注意,如果您将 A1 更改为 BLOB,则以下内容将起作用:
INSERT INTO DATA.FILE_TAB(A1) VALUES (LPAD(HEXTORAW('FF'), 22, HEXTORAW('FF')))。 -
LPAD(HEXTORAW('FF'), 22, HEXTORAW('FF')) 在我的情况下不起作用(NLS_CHARACTERSET = AL32UTF8)
-
鉴于您的字符集,我希望这可以工作。不过,我无法测试它,因为我可用的数据库都使用 US7ASCII。您似乎想要存储二进制数据 - 您可以将 A1 转换为 BLOB 而不是 CLOB 吗?另外,正如我上面提到的,
LPAD(HEXTORAW('FF'), 22, HEXTORAW('FF'))仅在 A1 是BLOB时才有效。
标签: oracle plsql hex clob utl-file