それぞれ約 250 億行を含むデータセットをデータベースの 1 つに読み込んでいます。それほど多くのデータがあるので、不要な行をロードしたくないので、ロードに WHERE 句を追加しました。データは XYZ 値の行で構成されます。Z = -9999 の場合、ポイントは定義されておらず、省略できます。
WHERE Z <> -9999を追加すると、このエラーが発生します...
SQL*Loader-350: Syntax error at line 5.
Expecting quoted string or hex identifier, found "-".
WHEN Z <> -9999
WHERE句がなくても問題なく動作します
データ:
44790.301538192,54665.413037326,-9999
44791.301474866,54665.387827518,-9999
44792.30141154,54665.36261771,-9999
44793.301348214,54665.337407902,-9999
対象テーブル:
CREATE TABLE LIDAR_DSM_XYZ_1M
(
PK_ID INTEGER,
TILE VARCHAR2(30 BYTE),
GEOMETRY MDSYS.SDO_GEOMETRY
)
制御ファイル:
OPTIONS(DIRECT=TRUE)
UNRECOVERABLE LOAD DATA
INFILE 'su9498_dsm_1m.xyz'
APPEND
INTO TABLE LIDAR_DSM_XYZ_1M
WHEN Z <> -9999
FIELDS TERMINATED BY ','
TRAILING NULLCOLS (
TILE CONSTANT 'su9498_dsm_1m',
GEOMETRY COLUMN OBJECT
(SDO_GTYPE CONSTANT 3001,
SDO_POINT COLUMN OBJECT
(X FLOAT EXTERNAL,
Y FLOAT EXTERNAL,
Z FLOAT EXTERNAL
)
)
)