apply an SQL operator、たとえばNVL(:PAESE, 'XXX')
などです。フィールド名への参照の前にコロンがあることに注目してください。
LOAD DATA
infile 'gian.csv'
REPLACE
INTO TABLE tar
fields terminated by ',' optionally enclosed by '"'
TRAILING NULLCOLS
(
IDTAR,
DATABACKUP DATE "YYYY-MM-DD",
PAESE "NVL(:PAESE, 'XXX')",
R_ELEM NULLIF (R_ELEM=BLANKS)
)
ダミーテーブルで:インサイチュ
テーブルタール作成(nullでない idtar番号、 データバックアップ日時、 パエーゼVARCHAR2(10)、 r_elemのVARCHAR2(10) )。
と3番目と4番目の行がnullif()
句の末尾のスペースをしているCSV、:
1,2017-08-01,A,B
2,2017-08-02,C,
3,2017-08-03,,
4,2017-08-04,"",
を、その制御ファイルを使用して実行するには、取得します。
SQL*Loader: Release 11.2.0.4.0 - Production on Fri Aug 4 19:39:23 2017
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Commit point reached - logical record count 4
とログは言う:
...
Column Name Position Len Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
IDTAR FIRST * , O(") CHARACTER
DATABACKUP NEXT * , O(") DATE YYYY-MM-DD
PAESE NEXT * , O(") CHARACTER
SQL string for column : "NVL(:PAESE, 'XXX')"
R_ELEM NEXT * , O(") CHARACTER
NULL if R_ELEM = BLANKS
Table TAR:
4 Rows successfully loaded.
0 Rows not loaded due to data errors.
0 Rows not loaded because all WHEN clauses were failed.
0 Rows not loaded because all fields were null.
...
表の問合せでは、4つの行がすべてロードされたことが示されます。
set null "<null>"
select * from tar;
IDTAR DATABACKU PAESE R_ELEM
---------- --------- ---------- ----------
1 01-AUG-17 A B
2 02-AUG-17 C <null>
3 03-AUG-17 XXX <null>
4 04-AUG-17 XXX <null>
明らかに、'XXX'
を使用したい実際のデフォルト文字列に置き換えます。あなたは '空文字列'と言っていたので、たとえば、空白文字を挿入するのに"NVL(:PAESE, ' ')"
を使うことができます。 空の文字列を使用することはできません。これは、Oracleに関する限り、nullと同じです。
空白の文字列とはどういう意味ですか?空の文字列は、Oracleではnullと同じです。したがって、空白文字は1つまたは複数ですか?テーブルDDLとCSVファイルのサンプルデータも役立ちます。 –
空の文字列は、Oracleのnullと同じです.Ahh !!! それはポイントです! –
["Oracle Databaseは現在、長さがゼロの文字値をnullとして扱いますが、将来のリリースではこれが続くことはありません。空の文字列をNULLと同じように扱わないことをお薦めします。 ://docs.oracle.com/database/121/SQLRF/sql_elements005.htm#SQLRF30037) –