Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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
此Oracle CTL文件或数据有什么问题?_Oracle_Oracle10g_Oracle11g_Sql Loader - Fatal编程技术网

此Oracle CTL文件或数据有什么问题?

此Oracle CTL文件或数据有什么问题?,oracle,oracle10g,oracle11g,sql-loader,Oracle,Oracle10g,Oracle11g,Sql Loader,我的数据如下: ID,SCORE_DATE,TYPE,SCORE,RAW_SCORE,RANK A1234,2012-09-05 23:59:59,FOOTBALL_TEAM_MIDDLE_AND_OLD_1234,10,0.123,1 A5678,2012-09-05 23:59:59,FOOTBALL_TEAM_MIDDLE_AND_OLD_1234,20,0.456,2 CTL文件: load data infile 'E:\Data\Sample.csv' bad

我的数据如下:

ID,SCORE_DATE,TYPE,SCORE,RAW_SCORE,RANK
A1234,2012-09-05 23:59:59,FOOTBALL_TEAM_MIDDLE_AND_OLD_1234,10,0.123,1
A5678,2012-09-05 23:59:59,FOOTBALL_TEAM_MIDDLE_AND_OLD_1234,20,0.456,2
CTL文件:

load data           
infile 'E:\Data\Sample.csv'
badfile 'E:\Data\Sample.bad'
APPEND into table TABLE1    
fields terminated by "," optionally enclosed by '"'
TRAILING NULLCOLS               
(   
 DRIVER,
 STARTDTE "to_date(SUBSTR(:STARTDTE,1,10),'YYYY-MM-DD') - 27",
 TYPE  CONSTANT 'FOOTBALL',
 SCORE   ,
 RANKSCORE ":SCORE",
 RANK    ,
 ENDDTE "to_date(SUBSTR(:STARTDTE,1,10),'YYYY-MM-DD')",
 LOADDT     "sysdate"
)
以下是我的表格结构:

CREATE TABLE "TABLE1"
  (
    "DRIVER" VARCHAR2(50 BYTE),
    "STARTDTE" DATE,
    "SCORE"           NUMBER,
    "ENDDTE" DATE,
    "TYPE" VARCHAR2(20 BYTE),
    "RANK"       NUMBER,
    "RANKSCORE"  NUMBER,
    "LOADDT"     VARCHAR2(20 BYTE)
  );
对于加载的每一行,我都会收到一条错误消息: 记录3:被拒绝-表1中的列分数错误。 ORA-01722:无效号码

怎么了

  • TYPE是oracle关键字,最好不要使用这样的列名

  • 表定义中没有类型列。如果列存在,则在读取所有字段后,将常量赋值移动到控制文件的末尾

    开始日期“至日期(子项(:开始日期,1,10),'YYYY-MM-DD')-27”, 键入常量“FOOTBALL”, 得分

  • 如果您试图忽略“FOOTBALL\u TEAM\u MIDDLE\u和\u OLD\u 1234”作为数据的字段,则需要添加

    THIRD_COLUMN FILLER,
    
    添加到控制文件以忽略该数据。类似于

    load data           
    infile 'E:\Data\Sample.csv'
    badfile 'E:\Data\Sample.bad'
    APPEND into table TABLE1    
    fields terminated by "," optionally enclosed by '"'
    TRAILING NULLCOLS               
    (   
     DRIVER,
     STARTDTE "to_date(SUBSTR(:STARTDTE,1,10),'YYYY-MM-DD') - 27",
     THIRD_COLUMN FILLER,
     SCORE   ,
     RANKSCORE ":SCORE",
     RANK    ,
     ENDDTE "to_date(SUBSTR(:STARTDTE,1,10),'YYYY-MM-DD')",
     LOADDT     "sysdate"
     TYPE  CONSTANT 'FOOTBALL',
    )
    
    应该修复您得到的错误

  • TYPE是oracle关键字,最好不要使用这样的列名

  • 表定义中没有类型列。如果列存在,则在读取所有字段后,将常量赋值移动到控制文件的末尾

    开始日期“至日期(子项(:开始日期,1,10),'YYYY-MM-DD')-27”, 键入常量“FOOTBALL”, 得分

  • 如果您试图忽略“FOOTBALL\u TEAM\u MIDDLE\u和\u OLD\u 1234”作为数据的字段,则需要添加

    THIRD_COLUMN FILLER,
    
    添加到控制文件以忽略该数据。类似于

    load data           
    infile 'E:\Data\Sample.csv'
    badfile 'E:\Data\Sample.bad'
    APPEND into table TABLE1    
    fields terminated by "," optionally enclosed by '"'
    TRAILING NULLCOLS               
    (   
     DRIVER,
     STARTDTE "to_date(SUBSTR(:STARTDTE,1,10),'YYYY-MM-DD') - 27",
     THIRD_COLUMN FILLER,
     SCORE   ,
     RANKSCORE ":SCORE",
     RANK    ,
     ENDDTE "to_date(SUBSTR(:STARTDTE,1,10),'YYYY-MM-DD')",
     LOADDT     "sysdate"
     TYPE  CONSTANT 'FOOTBALL',
    )
    

    应修复您遇到的错误。

    Rajesh很抱歉,这是一个打字错误,表中有一个“类型”列。你能再解释一下“填充物”部分吗?我希望插入一个常量“FOOTBALL”,而不是数据文件中的值。如果要忽略文件中的第三列,则需要指定忽略该列。这可以使用关键字“FILLER”来完成。编辑我的答案。拉杰什,第三栏是类型。我只想忽略数据文件中的数据,而插入'FOOTBALL'。第三列不是与TYPE分开的列。我使用了TYPE FILLER,然后键入常量'FOOTBALL',我得到一个错误SQL*Loader-404:列类型在表1的表块中多次出现。我仍然可以使用FILLER加载数据,然后运行SQL脚本更新这些记录。我想知道我是否可以只使用CTL文件就可以做到这一点。Rajesh-对不起,这是一个输入错误,表中有一个TYPE列。你能再解释一下“填充物”部分吗?我希望插入一个常量“FOOTBALL”,而不是数据文件中的值。如果要忽略文件中的第三列,则需要指定忽略该列。这可以使用关键字“FILLER”来完成。编辑我的答案。拉杰什,第三栏是类型。我只想忽略数据文件中的数据,而插入'FOOTBALL'。第三列不是与TYPE分开的列。我使用了TYPE FILLER,然后键入常量'FOOTBALL',我得到一个错误SQL*Loader-404:列类型在表1的表块中多次出现。我仍然可以使用FILLER加载数据,然后运行SQL脚本更新这些记录。我想知道我是否可以只用CTL文件就可以做到这一点。