2012-02-01 30 views
5

Napisałem skrypt SQL zawierający poniższe zapytanie. Zapytanie działa poprawnie.Zaktualizuj kolumnę w tabeli za pomocą 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. 
)); 

Ale zamiast pisać około 100 nazw w samym zapytaniu, chcę pobrać wszystkie nazwy z pliku CSV. Przeczytałem o SQL * Loader w Internecie, ale nie dostałem dużo informacji o aktualizacji. Mój plik csv zawiera tylko nazwy.

enter image description here

Próbowałem

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) 

Jak mogę to osiągnąć? Z góry dzięki.

Odpowiedz

5

SQL * Program ładujący nie wykonuje aktualizacji, tylko wstawia. Tak więc, należy wstawić swoje nazwiska w osobnej tabeli, powiedzmy names i uruchomić aktualizację z że:

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

Skrypt ładowarka może być zmienione na:

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

Alternatywną do tego celu jest użyj tabel zewnętrznych, które pozwalają Oracle traktować płaski plik, tak jak jest to tabela. Przykład, aby zacząć, można znaleźć pod adresem here.

Powiązane problemy