一个或多个UTF8字段包含非UTF 8数据,编辑可能会产生意外的结果

Osydorchuk

我在Oracle Linux 7.2上有一个文本文件(iso-8859-1),我正尝试在Oracle DB 12.1c(AL32UTF8)的表中加载该文件。

     declare
     f       Utl_File.File_Type;
     v_Buffer  varchar2(1000);
     v_Table   Parse.Varchar2_Table;
     v_Nfields integer;
 begin
     f     := Utl_File.Fopen('SA', '1.txt', 'R');
     if Utl_File.Is_Open(f) then
         loop
             begin
                 Utl_File.Get_Line(f, v_Line, 1000);
                 if v_Line is null then
                     exit;
                 end if;
                     Parse.Delimstring_To_Table(v_Line, v_Table, v_Nfields, Chr(9));
                     --insert into ...
                 end if;
             exception
                 when No_Data_Found then
                     exit;
             end;
         end loop;
     end if;
     Utl_File.Fclose(f);
 end;

这个解析

我在pl / sql开发人员中得到了漂亮(正确)的输出,并显示消息“一个或多个UTF8字段包含非UTF 8数据,编辑可能会产生意想不到的结果”

正确的图像

和Apex 5中的输出不正确。

顶点图像

我可以做点什么吗?我是Trieng转换?甲骨文翻译及更多...

更新1

select *
  from nls_database_parameters
 where parameter like '%CHARACTERSET%';

PARAMETER               VALUE
NLS_NCHAR_CHARACTERSET  AL16UTF16
NLS_CHARACTERSET        AL32UTF8
温弗里德(Wernfried Domscheit)

UTL_FILE文档

UTL_FILE期望以UTL_FILE.FOPEN在文本模式下打开的文件被编码为数据库字符集。

显然不是这样。

使用DBMS_LOB.OPEN()打开一个BFILE(请参阅BFILENAME)作为RAW值,然后使用UTL_I18N.RAW_TO_CHAR()函数将其转换为VARCHAR2。

然后,您可以使用Parse.Delimstring_To_Table函数来解析行。

考虑使用EXTERNAL TABLESQL * Loader,也许它们更易于使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从多个文件读取数据并将数据写入新文件会产生意外结果?

日历字段增加会产生意外结果

在同一模型中注释会产生意外结果

istringstream到int8_t产生意外结果

perl的$-[0]对于非ASCII数据产生意外结果

从两个线程写入一个文件会产生意外结果

使用Python curses将UTF8字符写入屏幕的最后一个位置

C Linux pthread:使用消息队列将数据从一个线程发送到另一个线程会产生意外结果

两个线程访问同一对象会产生意外结果

R,使用dplyr :: mutate和ifelse包含grepl()会产生意外结果

合并两个PySpark DataFrame会产生意外结果

比较两个NSDate对象的相等性会产生意外结果

从单个文件读取并写入2个单独的文件会产生意外结果

为什么$ _POST数据一旦构造成一个对象,就会丢失UTF8字符?

在弹性搜索中将规范化器与关键字数据类型一起使用会产生意外结果

Perl utf8 binmode意外结果

从另一个Powershell脚本调用Powershell脚本并确保它是UTF8

包含子进程的回声会产生意外的输出

闭包和让关键字产生意外结果

多个goroutine中的scanf产生意外结果

如何使用JavaScript计算包含UTF8字符的字节长度?

Lua-从文件中读取一个UTF-8字符

如何在pygame中显示一个utf-8字符?

如何从XML文件中跳过/删除无效的非UTF8字符

如何在Snowflake中查找非utf8字符的行?

有没有非utf8字符这样的东西

在Go中从utf8代码打印utf8字符

另一个字符串转换URL utf8 java

如何在erlang中连接两个utf8字符串?