0

load dataいくつかの perl で生成されたファイルを oracle データベースにインポートする必要があります。Perl スクリプトは Web ページを取得し、csv ファイルを書き込みます。

ここに簡略化されたスクリプトがあります:

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

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

Web ページのサンプル行を次に示します。

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 

Web ページのコンテンツは 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 に答える