2012-02-01 15 views
5

Sorgunun altında bir SQL komut dosyası yazdım. Sorgu iyi çalışıyor.SQL * Loader kullanarak tablodaki bir sütunu güncelleyin?

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

Ama şimdi bunun yerine bir sorguda kendisinde yaklaşık 100 isim yazma, CSV dosyasından tüm adları getirmek istiyoruz. İnternette SQL * Loader hakkında okudum ama güncelleme sorgusunda fazla bir şey almadım. Benim csv dosyasında sadece isimler var.

enter image description here

Ben bunu başarabilirsiniz nasıl

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) 

denediniz mi? Şimdiden teşekkürler.

cevap

5

SQL * Yükleyici, güncelleştirmeleri gerçekleştirmiyor, yalnızca ekler.

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

Buna alternatif şudur:

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

Kişisel yükleyici komut şekilde değiştirilebilir: Yani, ayrı bir tabloya isimlerini eklemek names söylemek ve bundan Güncellemenizi çalıştırmalısınız Oracle'ın masa gibi düz bir dosyayı işlemesine izin veren Dış Tablolar'ı kullanın. Başlamak için bir örnek here bulunabilir.