プロが教える店舗&オフィスのセキュリティ対策術

PL/SQLで、CSVファイルを読み込んでDBにデータを登録しようとしています。

CSVの1行を読み込んだあと、
カンマで区切ってリストに格納してくれるような
便利な関数は無いのでしょうか?

1行の先頭から1文字づつカンマかどうか調べて取り出す、よりも簡単な方法があれば是非教えて下さい。

A 回答 (4件)

SQL*loaderか何かで、テンポラリーか何かのTABLEに取り込んで、MERGEをかければ解決しませんか?


そうすれば、重複は発生しないと思いますよ。
(しかも、1件ずつ比較するpl/sqlより早いはず)

この回答への補足

Oracle8i Release 8.1.6.0.0なので、MERGE文は使えません。

補足日時:2006/02/21 11:51
    • good
    • 0

>よりも簡単な方法があれば



・SQL*Loaderを使う。
・9i以降であれば、外部表として定義して、
 insert into DEST select * from SRC;

あたりが簡単で良いと思いますが。

この回答への補足

Oracle8i Release 8.1.6.0.0なんです。

補足日時:2006/02/21 11:52
    • good
    • 0

SQL*Loaderのコントロールファイルのパラメータで REPLACE ってありませんでしたっけ?確か置き換えだったような…



今マニュアルがないのでうろ覚えですが、マニュアルで確認してみて下さい。
それと、splitっていう関数ありません?

この回答への補足

REPLACEだと古いデータが全部消えてしまうと思うのですが、重複データだけ消したいのです。

補足日時:2006/02/08 13:08
    • good
    • 0

SQL*Loaderを使うというのは無しですか?

この回答への補足

なしなんです~。

最初はそうしていたのですが、
データに重複が発生するので、
PL/SQLで重複データを削除しながら登録することにしました。
ちなみに削除対象は、重複データの古い方のデータです。(もともとテーブルにあるデータ)
新しいほうを弾くのであればSQL*Loaderでよかったんですが。。。

補足日時:2006/02/06 19:20
    • good
    • 0

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

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