假设你有一张 table :

CREATE TABLE Customer
(
  batch_id         NUMBER,
  customer_name    VARCHAR2(20),
  customer_address VARCHAR2(100)
)

假设你有一个控制文件来填充这个表:

加载数据文件'customers.dat'
代替

INTO TABLE 客户
(
batch_id ??????,
客户名称位置(001:020),
客户地址位置(021:120)
)

当我运行 SQL*Loader 时,是否可以将 batch_id 的值传递给我的控制文件?例如,是否可以指定绑定(bind)变量(将问号变成 :MY_AWESOME_BATCH_ID )?

最佳答案

一种相对简单的归档方法是创建一个存储函数,该函数返回批号并在加载程序文件中使用它。

create or replace function getBatchNumber return number as
begin
  return 815;
end;
/
LOAD DATA INFILE 'customers.dat'
REPLACE

INTO TABLE Customer
(
  batch_id         "getBatchNumber",
  customer_name    POSITION(001:020),
  customer_address POSITION(021:120)
)

关于oracle - 变量可以传递给 SQL*Loader 控制文件吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3760283/

10-12 17:37
查看更多