可以将变量传递给SQL*Loader控制文件吗?

Ada*_*ter 3 oracle sql-loader

假设你有一张桌子:

CREATE TABLE Customer
(
  batch_id         NUMBER,
  customer_name    VARCHAR2(20),
  customer_address VARCHAR2(100)
)
Run Code Online (Sandbox Code Playgroud)

并假设您有一个控制文件来填充此表:

LOAD DATA INFILE 'customers.dat'
REPLACE

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

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

Eri*_*ler 7

一种相对简单的归档方法是创建一个存储函数,该函数返回批号并在装入器文件中使用它.

create or replace function getBatchNumber return number as
begin
  return 815;
end;
/
Run Code Online (Sandbox Code Playgroud)
LOAD DATA INFILE 'customers.dat'
REPLACE

INTO TABLE Customer
(
  batch_id         "getBatchNumber",
  customer_name    POSITION(001:020),
  customer_address POSITION(021:120)
)
Run Code Online (Sandbox Code Playgroud)