2

私はcsvファイルをロードするためにSQLローダーを使用しています。列の 1 つはブール値である必要があります。ただし、Oracle は Boolean データ型をサポートしていません。したがって、検証または制約を追加する必要があります。列に制約を追加すると、直接ロード中に無視されるため、後で整理するために手動で介入する必要があります。制御ファイル内で検証を使用しようとすると、SQL ローダーは OR 演算子をサポートせず、AND のみをサポートします。そのため、WHEN colA='true' または colA='false' は実行できません

いくつかのサイトが以下のようなことを試すように言っているのを見ましたが、最初の WHEN 句だけが受け入れられ、2 番目のロードは無視されました。

OPTIONS (direct=true)
load data
TRUNCATE 
INTO TABLE TABLE_A
    WHEN PAY='false'
    FIELDS TERMINATED BY ','
    ( ID, NAME, PAY)
INTO TABLE TABLE_A
    WHEN PAY='true'
    FIELDS TERMINATED BY ','
    ( ID, NAME, PAY)

誰でも助けを提供できますか。ありがとう

4

1 に答える 1

0

SQL*Loaderフィールド・リストでSQL演算子を使用して値に対してCASEまたはDECODEを実行し、整数に変換したり、ブール値を表現したりできます。

ドキュメントの例。

于 2013-04-26T08:44:11.440 に答える