2012-02-01 6 views
5

以下のクエリを持つSQLスクリプトを作成しました。 クエリは正常に動作します。SQL * Loaderを使用してテーブルの列を更新しますか?

update partner set is_seller_buyer=1 where id in (select id from partner 
where names in 
(
'A','B','C','D','E',... // around 100 names. 
)); 

しかし、今の代わりにクエリ自体には約100名を書き込むので、私は、CSVファイルからすべての名前を取得したいです。 私はインターネット上のSQL * Loaderについて読んでいますが、更新クエリはあまり得られませんでした。 私のCSVファイルには名前のみが含まれています。

enter image description here

私は私がこれを達成するにはどうすればよい

load data 
    infile 'c:\data\mydata.csv' 
    into table partner set is_wholesaler_reseller=1 
    where id in (select id from partner 
    where names in 
    ( 
    'A','B','C','D','E',... // around 100 names. 
)); 
    fields terminated by "," optionally enclosed by '"'   
    (names, sal, deptno) 

を試してみましたか? ありがとうございます。

答えて

5

SQL * Loaderは更新を実行せず、挿入のみを実行します。だから、あなたは、別のテーブルにあなたの名前を挿入namesを言うと、それから、あなたの更新を実行する必要があります。

update partner set is_seller_buyer=1 where id in (select id from partner 
where names in 
(
select names from names 
)); 

あなたのローダースクリプトに変更することができます。これに

load data 
    infile 'c:\data\mydata.csv' 
    into table names 
    fields terminated by "," optionally enclosed by '"'   
    (names, sal, deptno) 

交互にあります外部表を使用します。これにより、Oracleは表のようにフラット・ファイルを処理できます。始めるための例はhereです。

関連する問題