使用SQL*Loader更新表中的列?

vik*_*iii 5 sql oracle sql-loader

我编写了一个具有以下查询的SQL脚本.查询工作正常.

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.
));
Run Code Online (Sandbox Code Playgroud)

但现在我不想在查询中写入大约100个名称,而是想从CSV文件中获取所有名称.我在互联网上阅读了关于SQL*Loader但我对更新查询没有太多了解.我的csv文件只包含名称.

在此输入图像描述

我试过了

  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 )
Run Code Online (Sandbox Code Playgroud)

我怎么能做到这一点?提前致谢.

Joh*_*yle 6

SQL*Loader不执行更新,只插入.所以,你应该将你的名字插入一个单独的表中names,然后从中运行你的更新:

update partner set is_seller_buyer=1 where id in (select id from partner 
where names in 
(
select names from names
));
Run Code Online (Sandbox Code Playgroud)

您的加载程序脚本可以更改为:

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

另一种方法是使用外部表,它允许Oracle将平面文件视为表格.可以在此处找到帮助您入门的示例.