Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用sql loader将数据从CSV文件加载到oracle表_Sql_Oracle_Sql Loader - Fatal编程技术网

使用sql loader将数据从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的记录解析非常相似, 因此,通常情况下,对于同一个问题,没有重大的性能差异 记录格式 您只需要对目录对象进行读/写操作。如果您可以创建一个(将目录您的目录创

我想使用以下条件将数据从CSV文件加载到oracle表

如果表为空,则只应将数据加载到表中,否则不应加载数据


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