0

我需要将load data一些 perl 生成的文件导入 oracle 数据库。Perl 脚本获取网页并写入 csv 文件。

这是一个简化的脚本:

use File::Slurp;     
my $c= ( $user && $passwd )
        ? get("$protocol://$user:$passwd\@$url")
        : get("$protocol://$url");

    write_file("$VZ_GET/$FileTS.$typ.csv",$c);

这是来自网页的示例行:

5052;97;Jan;Ihrfelt 5053;97;Jari;Honko 5121;97;Katja;Keitaanniemi 5302;97;Ola;Södermark 5421;97;Sven;Sköld 5609;97;Peter;Näslund 

网页内容保存在 var $c 中。

这是 csv 文件的示例行:

5053;97;Jari;Honko

这里有一个加载命令:

LOAD DATA
INTO TABLE LIQA
TRUNCATE
FIELDS TERMINATED BY ";"
(
    LIQA_ANALYST_ID,
    LIQA_FIRM_ID,
    LIQA_ANALYST_FIRST_NAME,
    LIQA_ANALYST_LAST_NAME,
    LIQA_TS_INSERT  DATE 'YYYYMMDDHH24MISS'
)

命令SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET';返回AL32UTF8

生成的 csv 文件被识别为 UTF-8 Unicode text.

无论如何我无法导入德语字符。在 csv 文件中,它们仍然是正确的。但在数据库中并非如此。

我也尝试过像这样转换 $c :

$c = encode("iso-8859-1", $c); 

生成的 csv 文件被识别为 UTF-8 Unicode text.

我不知道如何解决它。

4

1 回答 1

0

我已经解决了:

$c = decode( 'utf-8', $c );
$c = encode( 'iso-8859-1' , $c );
于 2013-05-24T08:41:55.337 回答