2012-02-01 45 views
5

Tôi đã viết một tập lệnh SQL có truy vấn dưới đây. Truy vấn hoạt động tốt.Cập nhật một cột trong bảng bằng cách sử dụng 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. 
)); 

Nhưng bây giờ thay vì viết khoảng 100 tên trong truy vấn, tôi muốn tìm nạp tất cả tên từ tệp CSV. Tôi đọc về SQL * Loader trên internet nhưng tôi không nhận được nhiều về truy vấn cập nhật. Tệp csv của tôi chỉ chứa tên.

enter image description here

Tôi đã thử

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) 

Làm thế nào tôi có thể đạt được điều này? Cảm ơn trước.

Trả lời

5

Trình tải SQL * không thực hiện cập nhật, chỉ chèn. Vì vậy, bạn nên chèn tên của bạn vào một bảng riêng biệt, nói names, và chạy cập nhật của bạn từ đó:

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

kịch bản bộ nạp của bạn có thể được thay đổi để:

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

Một thay thế cho điều này là để sử dụng Bảng bên ngoài cho phép Oracle xử lý tệp phẳng như bảng. Một ví dụ để giúp bạn bắt đầu có thể được tìm thấy here.

Các vấn đề liên quan