2015-03-31 62 views
-1

我有100条记录players.dat文件中像Oracle外部表加载

PIT INDIANPOLISH COLTS 

,然后新的生产线一样了。我如何将这些数据加载到外部表中?

这里是我的表定义:

CREATE TABLE TEAMS1( 
    TEAM_ID VARCHAR2(20) 
    , TEAM_NAME VARCHAR2(35) 
    ) 
ORGANIZATION EXTERNAL ( 
    TYPE ORACLE_LOADER 
    DEFAULT DIRECTORY DATA_WAREHOUSE 
    ACCESS PARAMETERS ( 
     RECORDS DELIMITED BY newline 
     fields terminated by whitespace 
     missing fields values are null ( 
      TEAM_ID VARCHAR(20), 
      TEAM_NAME VARCHAR2(35) 
      TERMINATED BY '/N') 
      ) 
    LOCATION ('NFL_Teams.dat') 
) ; 

以下是错误:

ORA-29913: error in executing ODCIEXTTABLEOPEN callout 
ORA-29400: data cartridge error 
KUP-00554: error encountered while parsing access parameters 
KUP-01005: syntax error: found "fields": expecting one of: "field" 
KUP-01007: at line 3 column 9 29913. 00000 - "error in executing %s callout" 
+0

不知道SQL Server,但对于Oracle,您可以在这里阅读文档http://docs.oracle.com/cd/B19306_01/server.102/b14215/et_concepts.htm – tilley31 2015-03-31 17:27:37

+0

它仅适用于Oracle。我试过了,但它给了我访问参数错误 – 2015-03-31 17:30:02

+0

你收到一个错误。你没有告诉我们你得到了什么具体的错误。您没有向我们展示您正在使用的代码。没有那些东西,我无法想象有人能够回答你。当您编辑问题以包含这些内容时,您可能还希望包含来自.dat文件的4或5行数据,告诉我们.dat文件的格式(逗号分隔,制表符分隔,固定宽度等) ),告诉我们该文件的位置,告诉我们您所创建的Oracle目录的定义,等 – 2015-03-31 17:51:27

回答

0

有你的代码的几个问题,你可以尝试根据这个来纠正它:

CREATE TABLE TEAMS1(TEAM_CODE varchar2(10), TEAM_ID VARCHAR2(20) , TEAM_NAME VARCHAR2(35)) ORGANIZATION EXTERNAL 
(TYPE ORACLE_LOADER DEFAULT DIRECTORY DATA_WAREHOUSE ACCESS PARAMETERS 
(RECORDS DELIMITED BY newline fields (TEAM_CODE varchar(10), TEAM_ID VARCHAR(20), 
TEAM_NAME VARCHAR(35))) LOCATION ('players.dat')) ; 

然后你可以创建标准表让我们说TEAMS(team_id varchar2(20),team_name varchar2(35))和load它来自外部表:

insert into teams select team_id, team_name from teams1; 
1

错误消息指向语法问题,它甚至给我们提供了线索。

KUP-01005: syntax error: found "fields": expecting one of: "field" 

果然,你的表定义有这个...

missing fields values are null 

...当它应该是这样的:

missing field values are null 

你有一个重大问题你的数据文件。您的表格定义指定fields terminated by whitespace,但您的示例数据显示了由两个词组成的团队名称INDIANPOLISH COLTS。你将无法加载。

最好的解决方案是让提供系统做正确的事,并提供一个使用明智的字段分隔符和/或现场机柜的数据文件。 (如果这是一份学校作业,你可以自己做。)

不太理想的解决方案是预处理数据文件,使用正则表达式来分隔或包围字段。