
Sql*Loaderを使用してCSVファイルを取り込む際に、取り込むCSVデータが5桁以上の場合はエラーとしたいのですが。
制御ファイルにどのような記述をすればよいかわかりません。どうか、ご教授お願いいたします。
ちなみに 5桁未満の場合は、0埋めを行っております。
具体的には、以下のような結果を出したいのですが。
○ 1 ⇒ 00001(0埋めして取り込む)
○ 00001 ⇒ 00001(取り込む)
○ 00000 ⇒ 00000(取り込む)
× 000001 ⇒ (取り込まない)
-------------------------------------------------------------
現状、以下のソースだと「1234567」のCSVデータをロードすると、
「34567」で取り込まれてしまいます。(エラー発生しない。)
【Sql*Loaderの制御ファイル】
LOAD DATA
(省略)
TRUNCATE
TRAILING NULLCOLS
(
No_colum "LPAD(:No_colum,5,'0')"
,
No2_colum "LPAD(:No2_colum,5,'0')"
)
【tmp_tableの情報】
カラム:No_colum vchar2(サイズ:5)
カラム:No2_colum vchar2(サイズ:5)
-------------------------------------------------------------
どうか、ご教授よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
制御ファイルのWHEN句では < というオペレータは使えないようですね。
フィールドリストでCASE式を使ってはどうでしょうか。
No_colum "CASE WHEN LENGTH(:No_colum) < 5 THEN LPAD(:No_colum,5,'0') ELSE :No_colum END"
という感じです。
桁数オーバーになるレコードはエラーになるので取込まれないと思います。
No.1
- 回答日時:
LOAD DATA
INTO TABLE XXX
WHEN No_colum < "000000" AND No2_colum < "000000"
(省略)
TRUNCATE
TRAILING NULLCOLS
(
No_colum "LPAD(:No_colum,5,'0')"
,
No2_colum "LPAD(:No2_colum,5,'0')"
)
でどうでしょう。
この回答への補足
ご回答ありがとうございます。
上記のSQLを実行した結果、エラーが発生します。
SQL*Loader-350: 行8に構文エラーがあります。
英数字以外の無効な文字列があります
WHEN No_colum < "000000" AND No2_colum < "000000"
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) CSVファイルの「0落ち」にVBA 6 2023/02/02 15:27
- Visual Basic(VBA) VBA 毎日取得するデータを順番に反映していく方法 6 2023/08/26 16:22
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- その他(開発・運用・管理) おんどとりWebStorage APIから温度情報を取得し表示したい 2 2023/08/03 09:53
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
- Excel(エクセル) EXCELの「接続」のSQLのコマンド文字列にて、セルから任意の数値を利用したい 2 2023/03/09 16:43
- オープンソース Python openpyxlを使用したセル番地の使用について 1 2023/08/03 22:05
- Excel(エクセル) Excel Powerクエリーの質問、行数指定は可能でしょうか? 2 2022/08/22 12:54
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
このQ&Aを見た人はこんなQ&Aも見ています
-
SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について
Oracle
-
SQL*Loaderで、データを加工してロードしたいです。
Oracle
-
SQL*LoaderでCSVから指定した列のみインポートしたい。
Oracle
-
-
4
SQLLOADER
Oracle
-
5
sql*loader 数値のロード
Oracle
-
6
SQL*Loaderでのsysdate使用
Oracle
-
7
SQL*Loaderのコミットポイント設定がうまくいってない?
Oracle
-
8
SQLローダーで複数のCSVファイルのデータを一つのテーブルにInsertしたい
その他(データベース)
-
9
SQL*Loader
Oracle
-
10
SQL*Loaderで桁数チェック
Oracle
-
11
oracle spool SJIS → UTF-8
Oracle
-
12
SIDとSERVICE_NAMEの違いとは?
Oracle
-
13
ShellでSQL*loaderのエラー処理
Oracle
-
14
SQL*Loaderでのゼロ埋め
Oracle
-
15
SQL*Loader フォーマット変換について
Oracle
-
16
SQL*Loaderで「オブジェクトが存在しない」というエラーが出ます
その他(データベース)
-
17
カンマがデータとして入ってるCSVについて
Oracle
-
18
データ削除とSQL*Loaderでのインポート
Oracle
-
19
SQL-LOADERの逆のもの
Oracle
-
20
SQL*Loader Append
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UPDATEで既存のレコードに文字...
-
SQL*LOADER実行時のロードデー...
-
カラム名を変更するには
-
フラグをたてるってどういうこ...
-
【SQL】他テーブルに含まれる値...
-
SELECT INTOで一度に複数の変数...
-
sqlに記述できない文字
-
オラクルのUPDATEで複数テーブル
-
truncate tableを使って複数の...
-
Accessの構成をコピーしたい
-
SQLで、Join句で結合したテ...
-
テーブル名が可変の場合のクエ...
-
CASEでBETWEEN制約
-
timestampのデータはどのように...
-
Access2010のVBAで異体字の記述
-
PRIMARY KEYのコピー
-
SQLSERVER 連番更新について
-
複数の条件に該当する結果を、...
-
クエリ式でDcount の代わりは?
-
水平分割されたテーブルに対す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UPDATEで既存のレコードに文字...
-
SQL*LOADER実行時のロードデー...
-
OracleのLONG型への insert に...
-
【DB2】VARCHAR拡張時のデータ...
-
カラム名を変更するには
-
【SQL】同値のレコードがある場...
-
Access VBA フィールドの追加と...
-
sqlite select 表示されない
-
【SQL】他テーブルに含まれる値...
-
フラグをたてるってどういうこ...
-
SELECT INTOで一度に複数の変数...
-
sqlに記述できない文字
-
truncate tableを使って複数の...
-
PostgreSQLのtimestamp型で時間...
-
エラーを起こす方法
-
既存データをINSERT文にして出...
-
オラクルのUPDATEで複数テーブル
-
SQLで、Join句で結合したテ...
-
timestampのデータはどのように...
-
selectの単純繰り返し
おすすめ情報