- 締切済み
PL/SQLで文字列を分割
PL/SQLで、CSVファイルを読み込んでDBにデータを登録しようとしています。 CSVの1行を読み込んだあと、 カンマで区切ってリストに格納してくれるような 便利な関数は無いのでしょうか? 1行の先頭から1文字づつカンマかどうか調べて取り出す、よりも簡単な方法があれば是非教えて下さい。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- 7colors
- ベストアンサー率25% (29/114)
SQL*loaderか何かで、テンポラリーか何かのTABLEに取り込んで、MERGEをかければ解決しませんか? そうすれば、重複は発生しないと思いますよ。 (しかも、1件ずつ比較するpl/sqlより早いはず)
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
>よりも簡単な方法があれば ・SQL*Loaderを使う。 ・9i以降であれば、外部表として定義して、 insert into DEST select * from SRC; あたりが簡単で良いと思いますが。
補足
Oracle8i Release 8.1.6.0.0なんです。
- PrintScree
- ベストアンサー率25% (538/2091)
SQL*Loaderのコントロールファイルのパラメータで REPLACE ってありませんでしたっけ?確か置き換えだったような… 今マニュアルがないのでうろ覚えですが、マニュアルで確認してみて下さい。 それと、splitっていう関数ありません?
補足
REPLACEだと古いデータが全部消えてしまうと思うのですが、重複データだけ消したいのです。
- PrintScree
- ベストアンサー率25% (538/2091)
SQL*Loaderを使うというのは無しですか?
補足
なしなんです~。 最初はそうしていたのですが、 データに重複が発生するので、 PL/SQLで重複データを削除しながら登録することにしました。 ちなみに削除対象は、重複データの古い方のデータです。(もともとテーブルにあるデータ) 新しいほうを弾くのであればSQL*Loaderでよかったんですが。。。
補足
Oracle8i Release 8.1.6.0.0なので、MERGE文は使えません。