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)
-------------------------------------------------------------

どうか、ご教授よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

制御ファイルのWHEN句では < というオペレータは使えないようですね。


フィールドリストでCASE式を使ってはどうでしょうか。
No_colum "CASE WHEN LENGTH(:No_colum) < 5 THEN LPAD(:No_colum,5,'0') ELSE :No_colum END"
という感じです。
桁数オーバーになるレコードはエラーになるので取込まれないと思います。
    • good
    • 2

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"

補足日時:2011/04/13 09:25
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q部屋をDIYします。 部屋のイメージ変えで壁紙を変えました。 3面パステルピンクの1面チェック柄の

部屋をDIYします。

部屋のイメージ変えで壁紙を変えました。
3面パステルピンクの1面チェック柄のパステルピンクです。
ドアが元々クリーム色なのですが、取れない汚れが着いているので、そのままペンキで塗ろうか、カッティングシートを貼ろうか悩んでいます。
そこで質問なのですが、ドアの色は何色が合うと思いますか?
元々パステルピンク×白で統一しようと思っていたので真っ白なドアにしようとしていたのですが、他に合う色があればなぁと悩んでいます。ちなみに可愛い感じのお部屋にしたいです。

宜しくお願い致します。

Aベストアンサー

白が無難です。
 家具類も。

その他の家具など相当センスよくやらないと、グダグダ感のあるピンクの部屋になるので、注意が必要ですよ
https://www.google.co.jp/search?q=%E3%83%94%E3%83%B3%E3%82%AF%E3%81%AE%E9%83%A8%E5%B1%8B&hl=ja&source=lnms&tbm=isch&sa=X&ved=0ahUKEwi4646VvtbMAhUHeaYKHWGzCnIQ_AUIBygB&biw=1280&bih=861

ドアの汚れは、マジックリンで拭いてください、その後水拭き
それでダメなら消しゴムでこすって、それでダメなら紙やすりか、固いスポンジでゴシゴしして、落とします。

それでも落ちないんだったら、最初にグレー(灰色)を塗ってから、白を塗ります。

ドアは、まっ平らですか?気泡が入らないように上手に貼れますか?(^_^;

QSQL*Loaderでのデータロード

SQL*Loaderでデータロードを実行するとき
ロードするテキストファイルのある列の部分が
スペースのとき、テーブルで設定したデフォルト値
をロードさせたいのですが、どうCTLファイルで記述
すればよいのですか?
教えてください。おねがいします。

Aベストアンサー

こんにちは。

表(C)は、
**********************************
名前 型
------------
COL1 CHAR(1)
COL2 CHAR(1)
**********************************
こんなもんでしょうか。

データファイルは、
**********************************
a1
2
c3
**********************************
こんなもんでしょうか。

CTLファイルは、
**********************************
INTO TABLE C
(
COL1 POSITION(001:001) CHAR "DECODE(:COL1,'','0',:COL1)"
,
COL2 POSITION(002:002) CHAR
)
**********************************
こんなもんでしょうか。

これで行うと、表Cは、
**********************************
a 1
0 2
c 3
**********************************
になります。参考になるでしょうか?

こんにちは。

表(C)は、
**********************************
名前 型
------------
COL1 CHAR(1)
COL2 CHAR(1)
**********************************
こんなもんでしょうか。

データファイルは、
**********************************
a1
2
c3
**********************************
こんなもんでしょうか。

CTLファイルは、
**********************************
INTO TABLE C
(
COL1 POSITION(001:001) CHAR "DECODE(:COL1,'','0',:COL1)"
,
COL2 POSITION(002:002) CHAR
)
*****...続きを読む

QXPで壁紙の復帰-「Win高速化PC+」の方法

XPのSP2環境です。先日デスクトップ上のアイコンをキャプチャーするために、フリーソフト「Win高速化PC+」上から、「デスクトップ」の「壁紙を非表示」にしました。しかしその後壁紙を復帰させようとしても、「壁紙を非表示する」のチェックが外れません。ヘルプには「チェックを外して再起動すれば」と書いてありますが、チェックが取れずに、復帰できません。また、ウル覚えですが以前、デスクトップ上で「右クリック→プロパティ」で「画面のプロパティ」に入り、「テーマ」のところで、壁紙を自由に選べたと思うのですが、今「参照」からはいっても、「テーマファイル」を探すだけで、画像を選択できません。どうしたらいいでしょうか?また「テーマファイル」だけの選択になっているのは、「Win高速化PC+」上で「非表示」にしてしまったせいでしょうか?
このソフトでの「チェックの外し方」と、「画面のプロパティ-壁紙の選択」について教えてください。

Aベストアンサー

参考URLをごらんください。
私も同じ現象になり 困っていましたが、今は直り 壁紙もお気に入りのになりました(^^)

参考URL:http://pasofaq.jp/windows/desktop/classicshell.htm

QSQL*Loaderでexcel内のデータロード

Oracle初心者です。
掲題の通りなのですが、
excelのファイル内に記述されている表の
データをSQL*Loaderでロードするには
どうすればいいのでしょうか?

まずexcelの表をcsvファイルにすればよいと思うのですが、csvファイルへの仕方がわかりません…

初歩的な質問ですが、よろしくお願いします。

Aベストアンサー

こんにちは。

>>csvファイルへの仕方がわかりません…
excelを保存する時に、CSV形式を選択すればいいですよ。
(^^ゞ

Q壁紙変更ソフトについて

「Wall Driver バージョン 3.10 」というソフトを使っています。Windows起動時に壁紙が自動変更するようにしたいのですが、チェックを入れても壁紙が変わりません。このソフトを使っていらっしゃる方、「どこにチェックを入れればよいか」教えてください。また、「ほかのソフトで簡単に壁紙変更できます」という方、是非教えてください。よろしくおねがいします。OSは、WindowsXPです。

Aベストアンサー

「Wall Driver バージョン 3.10 」の事は分かりませんが、私は「Bgcall」と言うソフトを愛用しています。壁紙の画像ファイルごとの選択も可能で(例えばMyPictureの中身全てとか)、シャッフルも出来ます。またデスクトップにカレンダーを表示させる機能も付いてます。PCの起動ごとに壁紙を変更するにはこのソフトを立ち上げて「スタートアップ」にチェックを入れるだけです。

参考URL:http://www.vieas.com/

QSQL*Loaderで、データを加工してロードしたいです。

SQL*Loaderを使ってデータをテーブルにロードしたいのですが、その際に、データを加工してロードしたいと考えております。

◎使用するコントロールファイルのサンプル
(項目1)(項目2)(項目3)
12345, abcde, ABCDE

◎使用するコントロールファイルのサンプル
Load Data
truncate
Into Table "Sample"
Fields terminated by ','
Optionally enclosed by '"'
(
 項目1,
 項目2,
 項目3,
 項目4 EXPRESSION ":項目1(の下1桁)|| ' ' || :項目2(の下2桁)|| ' ' || :項目3(の下3桁)"
)

まず、項目4には、項目1~3のデータを連結したものをロードしたいと考えております。
その際に、

項目4(6桁)="項目1の下1桁"+"項目2の下2桁"+"項目3の下3桁"

となるようにしたいのですが、どのような関数を使ったらよいのでしょうか?

また、連結する関数"EXPRESSION"とどのように組み合わせたらよいのか教えていただけないでしょうか?


思い当たる様々なキーワードでググってみたのですが、参考になるページを見つけることができませんでした。
「ヒントやるから自分で調べろ」みたいなお返事でも結構ですので、アドバイスをいただけますようお願い申し上げます。

SQL*Loaderを使ってデータをテーブルにロードしたいのですが、その際に、データを加工してロードしたいと考えております。

◎使用するコントロールファイルのサンプル
(項目1)(項目2)(項目3)
12345, abcde, ABCDE

◎使用するコントロールファイルのサンプル
Load Data
truncate
Into Table "Sample"
Fields terminated by ','
Optionally enclosed by '"'
(
 項目1,
 項目2,
 項目3,
 項目4 EXPRESSION ":項目1(の下1桁)|| ' ' || :項目2(の下2桁)|| ' ' || :項目3(の下3桁)"
)

まず、...続きを読む

Aベストアンサー

#1です。すいません、訂正です。

項目4 EXPRESSION "SUBSTR(:項目1,-1,1)|| ' ' || SUBSTR(:項目2,-1,2)|| ' ' || SUBSTR(:項目3,-1,3)"

QBingの壁紙設定

Bingの壁紙を変更したいです。
僕のお気に入りはBingサイトにある1つ前の壁紙なのですが、静止画像を保存するにチェックを入れてもトップの壁紙になってしまいます。

1つ前の壁紙に設定する方法をご存知の方がいれば教えていただけると幸いです。
よろしくお願いします。

Aベストアンサー

検索窓の「歯車」アイコンをクリック「設定」「Bing のホームページ画像をデスクトップの壁紙として設定する」のチェックを外します。(Windows 8.1では「歯車」の左「i」アイコンから設定かも)

Q現在、VBAにてUNICODEのCSVを出力し、SQL*Loaderで

現在、VBAにてUNICODEのCSVを出力し、SQL*Loaderでテーブルへ取り込む処理を作成しています。
そこで、文字コードについて質問があります。

作成したCSVで、IBMフォーマットの全角マイナスとWindowsの全角マイナスが
あります。これをSql*Loaderにてテーブルへ取り込むと、Windowsの全角マイナスが
IBMの全角マイナスへ変換されてしまいます。
これはSql*Loaderの仕様でしょうか?

IBMの文字コードは、E28892(&H2212)、Windowsの文字コードは、EFBC8D(&HFF0D)です。
Sql*LoaderのCONTROLファイルでCHARACTERSETをUTF16にしています。

宜しくお願いします。

Aベストアンサー

このあたりを参考に
http://d.hatena.ne.jp/mokkouyou2001/20080305/1204713509
http://d.hatena.ne.jp/srkzhr/20090617/1245254444
http://www.oracle.co.jp/forum/thread.jspa?messageID=11006912

Qタバコによる壁紙の変色をきれいにしたい

持ちマンションを2年間賃貸で貸した後に部屋をチェックしたところ白い壁紙が黄色に変色していました。2年前にリフォームして壁紙も張り替えたばかりなのでクリーニングして元の白い壁紙に再生したいと思います。
何かよい方法があったら洗浄剤など教えてください。
又、ハウスクリーニング業などで壁紙の洗浄をお願いできるところがあったら紹介してください。
ちなみに持ちマンションは川越市駅から徒歩5分のところです。

Aベストアンサー

こんばんは。
ガラスクルーと言う商品で、
吹き付けると、泡と共にヤニが溶けて浮き上がり、いとも簡単に雑巾で拭き取れ完全にまっ白になります。
業者に頼まなくても全く問題ありませんよ\(^_^)/

QSQL*Loaderをダイレクトモードで実行

するにはどうしたらいいのでしょうか?
例えば以下の場合にダイレクトモードでSQL*Loaderするにはどうしたらいいのでしょうか?


sqlldr sato/secret control=x.ctl

ただし

x_table:
create table x_table(i number,s varchar(99));

x.ctl:
LOAD DATA
INFILE 'x.csv'
APPEND
INTO TABLE x_table
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
i,s
)

x.csv:
1,"it is iti."
2,"it is ni."
3,"it is san."

Aベストアンサー

sqlldr sato/secret control=x.ctl direct=true

ただし、ダイレクトパスロードの動作要件の問題もあるので、
ユーティリティガイドやオラクル概要等を一度読まれると良いと
思います。


人気Q&Aランキング

おすすめ情報