Oracle 18c外部表从UNC路径导入csv文件

  

前言

     

以前,当使用本地路径来创建目录(使用本地驱动器,例如F:\ stats)时,将csv文件导入到外部表中时,此脚本已经起作用。 UNC路径(\\ station-1 \ ...)的strong>

脚本

CREATE OR REPLACE DIRECTORY csvdir AS '\\Station-1\mainFolder\stats';

DROP TABLE EXT_index;
CREATE TABLE EXT_index(
  SESSION_STATION NVARCHAR2(60),"user" NVARCHAR2(20),"type" NCHAR(4),"date" DATE,"hour" NVARCHAR2(8),BATCH NUMber,STEP NUMber,VARIANTE NUMber,TIME_MS NUMber,NB_FOLDER NUMber,NB_DOC NUMber,NB_FIELDS NUMber,NB_FIELDS_SHOW NUMber,NB_FIELDS_CONFIRM NUMber,NB_FIELDS_EMPTY NUMber,NB_KEY NUMber,NB_CHAR NUMber,NB_USEFUL_CHAR NUMber
)organization external (
  type oracle_loader 
  default directory csvdir 
  access parameters (
    records delimited by newline skip 1 
    fields terminated by ';' lrtrim 
    missing field values are null (
      SESSION_STATION,"user","type","date" date 'yyyy-mm-dd',"hour",BATCH,STEP,VARIANTE,TIME_MS,NB_FOLDER,NB_DOC,NB_FIELDS,NB_FIELDS_SHOW,NB_FIELDS_CONFIRM,NB_FIELDS_EMPTY,NB_KEY,NB_CHAR,NB_USEFUL_CHAR
    )
  )
location('INDEX.csv')
)
reject limit unlimited;

DROP TABLE TMP_index;
CREATE TABLE TMP_index AS(SELECT * FROM EXT_index);

信息

  • 使用的数据库:OracleXE 18c
  • 包含我们需要导入的csv的文件夹为' \\ Station-1 \ mainFolder \ stats ',并且位于远程工作站上,与运行数据库的本地计算机不同
  • >

问题

如前所述,当csvdir本地路径(F:\ mainFolder \ stats),csv导入到外部表中且临时表可以以后再从中创建就可以了。

  • csvdir UNC路径时,错误如下:KUP-04027: file name check failed: INDEX.csv
  • csvdir是映射到先前UNC路径的网络驱动器 J:\ 映射到\\ Station-1 \ mainFolder,例如{ {1}} = J:\ stats),错误如下:csvdir

尝试从KUP-04040: file INDEX.csv in CSVDIR not found创建TMP_index时,会同时发生这两种错误:

EXT_index
  • 在SQL Developer中签入时,CREATE TABLE TMP_index AS(SELECT * FROM EXT_index) Error report - ORA-29913: error in executing ODCIEXTTABLEOPEN callout ORA-29400: data cartridge error --> Either KUP-04027 or KUP-04040 here,depending on how csvdir was created <-- 始终为空,该表似乎无法正确创建(即该表的EXT_index选项卡甚至不显示列名)

为解决问题而采取的步骤

  • 与拥有完全控制权的2个用户共享文件夹“ \\ Station-1 \ mainFolder ”:每个人和User1(我的帐户)
  • 在具有数据库的计算机(我的本地计算机)上,此“ \\ Station-1 \ mainFolder ”已映射到网络驱动器: J:\
  • 使用 J:\ 时,Data被创建为'J:\ stats'
  • 使用 \\ Station-1 \ mainFolder 时,csvdir被创建为'\\ Station-1 \ mainFolder \ stats'
  • 根据this link,服务csvdirTNSListener都开始登录我的帐户 User1

问题

如何将位于远程服务器上的csv文件导入本地外部表?

heiheiliangliang 回答:Oracle 18c外部表从UNC路径导入csv文件

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2940804.html

大家都在问