使用sql loader将数据从CSV文件加载到oracle表
我想使用以下条件将数据从CSV文件加载到oracle表 如果表为空,则只应将数据加载到表中,否则不应加载数据使用sql loader将数据从CSV文件加载到oracle表,sql,oracle,sql-loader,Sql,Oracle,Sql Loader,我想使用以下条件将数据从CSV文件加载到oracle表 如果表为空,则只应将数据加载到表中,否则不应加载数据 sql加载器是否可以满足此要求?或者我是否需要使用任何其他ETL工具,如informatica?无论您使用的是哪个操作系统环境,您都可以使用ORACLE\u LOADER访问驱动程序 来自Oracle文档 外部表和SQL*Loader的记录解析非常相似, 因此,通常情况下,对于同一个问题,没有重大的性能差异 记录格式 您只需要对目录对象进行读/写操作。如果您可以创建一个(将目录您的目录创
sql加载器是否可以满足此要求?或者我是否需要使用任何其他ETL工具,如informatica?无论您使用的是哪个操作系统环境,您都可以使用
ORACLE\u LOADER
访问驱动程序
来自Oracle文档
外部表和SQL*Loader的记录解析非常相似,
因此,通常情况下,对于同一个问题,没有重大的性能差异
记录格式
您只需要对目录对象进行读/写操作。如果您可以创建一个(将目录您的目录创建为“”
),或者要求其他超级用户提供适当的授权(将目录您的目录上的读取授权给您的模式
)
可以使用executeimmediate
DECLARE
l_exists INT;
BEGIN
SELECT CASE
WHEN EXISTS ( SELECT 1
FROM yourmaintable
WHERE ROWNUM = 1
) THEN 1
ELSE 0 END
into l_exists from dual;
IF l_exists : = 0 THEN --If the Table is empty
EXECUTE IMMEDIATE q'{ CREATE TABLE your_ext_table -- Using the alternate
-- quoting mechanism
(col1 INT,
col2 VARCHAR2(20)
col3 DATE)
ORGANIZATION EXTERNAL
(TYPE ORACLE_LOADER -- Use the ORACLE_LOADER driver to load your file.
DEFAULT DIRECTORY YOUR_DIR
ACCESS PARAMETERS
(RECORDS DELIMITED BY NEWLINE
FIELDS (col1 CHAR(2),
col2 VARCHAR2(20),
col3 VARCHAR2(20) date_format DATE mask "mm/dd/yyyy"
)
)
LOCATION ('yourfile.csv')
)}'
;
EXECUTE IMMEDIATE 'INSERT INTO yourmaintable (col1,col2,col3) --dynamic Insert
select * FROM your_ext_table';
END IF;
END;
/
您可以使用加载选项:
INSERT
来实现它
它要求表在加载前为空。SQL*加载器
如果表包含行,则终止时出错
你可以参考:
干杯 您正在Unix环境中工作吗?哪个平台/程序/应用程序运行sql加载器?不,不是unix。我正在使用windows