关于从csv文件导入到oracle表的问题,重复的列消息,但没有列重复

问题描述 投票:0回答:1

以下生成ORA-00957重复的列名,但是该列名不重复。请协助。

Create Or Replace Procedure XE_IMP_Census_Employer_000001_LOAD
As

Begin
  INSERT INTO XE_IMP_Census_Employer_000001(
      SSN                              ,
      SSN_Old                          ,
      Employee_ID                      ,
      Employee_ID_Old                  ,
      First_Name                       ,
      Middle_Name                                            ,
      Last_Name                        ,
      Street_1                         ,
      Street_2                         ,
      City                             ,
      State                            ,
      Zip                              ,
      DOB                              ,
      DOD                              ,
      Employee_EMail                   ,
      Phone_Cell                       ,
      Orig_Hire_Date                   ,
      ReHire_Date                      ,
      Pay_Freq                         ,
      Pay_Type                         ,
      Annual_Salary                    ,
      FT_PT                            ,
      Job_Title                        ,
      Gender_MF                        ,
      Life_Insur_Coverage              ,
      EPR                            ,
      OPTOUT_401K                    ,
      OPTIN_401K                                             
      )
    SELECT 
      SSN,                             
      SSN_Old,                         
      Employee_ID,                     
      Employee_ID_Old,                 
      First_Name,                      
      Middle_Name,                      
      Last_Name,                       
      Street_1,                        
      Street_2,                        
      City,                            
      State,                           
      Zip,                             
      DOB,                             
      DOD,                             
      Employee_Email,                  
      Phone_Cell,                      
      Orig_Hire_Date,                  
      ReHire_Date,                     
      Pay_Freq,                        
      Pay_Type,                        
      Annual_Salary,                   
      FT_PT,                           
      Job_Title,                       
      Gender_MF,                       
      Life_Insur_Coverage,             
      EPR,                              
      OPTOUT_401K,                      
      OPTIN_401K                       

    FROM   EXTERNAL (   
    (
      SSN                                   Varchar2(11)     ,  
      SSN_Old                               Varchar2(11)     ,  
      Employee_ID                           Varchar2(20)    ,   
      Employee_ID_Old                       Varchar2(20)    ,   
      First_Name                            Varchar2(30)    ,   
      Middle_Name                                         Varchar2(30)    ,   
      Last_Name                             Varchar2(30)    ,   
      Street_1                              Varchar2(40)    ,   
      Street_2                              Varchar2(40)    ,   
      City                                  Varchar2(64)    ,   
      State                                 Varchar2(64)    ,   
      Zip                                   Varchar2(15)    ,   
      DOB                                   Date            ,   
      DOD                                   Date            ,   
      Employee_EMail                        Varchar2(254)   ,   
      Phone_Cell                            Varchar2(15)    ,   
      Orig_Hire_Date                        Date            ,   
      ReHire_Date                           Date            ,   
      Pay_Freq                              Varchar2(50)    ,   
      Pay_Type                              Varchar2(50)    ,   
      Annual_Salary                         Number(20,2)    ,   
      FT_PT                                 Varchar2(5)     ,   
      Job_Title                             Varchar2(50)    ,   
      Gender_MF                             Varchar2(4)     ,   
      Life_Insur_Coverage                   Number(20,2)    ,   
      EPR                                                           Varchar2(50)    ,   
      OPTOUT_401K                                               Date                        ,   
      OPTIN_401K                            Date                            
    )     
    TYPE ORACLE_LOADER     
    DEFAULT DIRECTORY DATA_PUMP_DIR
    ACCESS PARAMETERS (
      RECORDS DELIMITED BY NEWLINE
      FIELDS TERMINATED BY ',')     
   LOCATION ('PersonCensus.csv') REJECT LIMIT UNLIMITED);


End XE_IMP_Census_Employer_000001_LOAD;
/
oracle plsql import-from-excel import-csv
1个回答
0
投票

[您使用的语法允许即时定义外部表,我认为这可能是问题的根本原因。

使用经典语法创建外部表会更容易:

SQL> create table ET
  2  (
  3        SSN                   Varchar2(11)     ,
  4        SSN_Old               Varchar2(11)     ,
  5        Employee_ID               Varchar2(20)    ,
  6        Employee_ID_Old           Varchar2(20)    ,
  7        First_Name                Varchar2(30)    ,
  8        Middle_Name               Varchar2(30)    ,
  9        Last_Name                 Varchar2(30)    ,
 10        Street_1              Varchar2(40)    ,
 11        Street_2              Varchar2(40)    ,
 12        City                  Varchar2(64)    ,
 13        State                 Varchar2(64)    ,
 14        Zip                   Varchar2(15)    ,
 15        DOB                   Date        ,
 16        DOD                   Date        ,
 17        Employee_EMail            Varchar2(254)   ,
 18        Phone_Cell                Varchar2(15)    ,
 19        Orig_Hire_Date            Date        ,
 20        ReHire_Date               Date        ,
 21        Pay_Freq              Varchar2(50)    ,
 22        Pay_Type              Varchar2(50)    ,
 23        Annual_Salary             Number(20,2)    ,
 24        FT_PT                 Varchar2(5)     ,
 25        Job_Title                 Varchar2(50)    ,
 26        Gender_MF                 Varchar2(4)     ,
 27        Life_Insur_Coverage           Number(20,2)    ,
 28        EPR                   Varchar2(50)    ,
 29        OPTOUT_401K               Date,
 30        OPTIN_401K                Date
 31  )
 32  ORGANIZATION EXTERNAL
 33  (
 34    TYPE ORACLE_LOADER
 35    DEFAULT DIRECTORY DATA_PUMP_DIR
 36    ACCESS PARAMETERS (
 37    RECORDS DELIMITED BY NEWLINE
 38    FIELDS TERMINATED BY ',')
 39    LOCATION ('PersonCensus.csv')
 40  ) REJECT LIMIT UNLIMITED;

Table created.

并且从此永久表运行简单的INSERT ... SELECT ...应该起作用:

insert into xe_imp_census_employer_000001
select * from et;
© www.soinside.com 2019 - 2024. All rights reserved.