从不同文件夹中的文件导入数据Oracle-SQL

时间:2015-02-13 08:52:01

标签: sql oracle csv import

我想从不同的文件夹导入许多不同的文件。每个文件夹都有一个数字。有一个文件夹结构,如:

E:\数据\ drivers_v1 \驱动\ 1

enter image description here

文件夹结构有一个特定的问题:缺少一些文件夹。例如,de文件夹4到9。

在每个文件夹中都有200个文件。每个文件都有一个像1.csv,2.csv等的数字。我想在一个表中导入这些文件。导入后,a具有与文件夹相同数量的表。

我尝试了几个pl / sql代码。最后一个选项是:

DECLARE
    TELLER_1   INTEGER := 1;
    TELLER_DR  INTEGER :=10;
    AANTAL_SEC INTEGER;
    ctt0 varchar(30000);
    ctt1 varchar(30000);
    ctt2 varchar(30000);
    ctt3 varchar(30000);

BEGIN   

FOR TELLER_DR IN 10..12 LOOP

execute immediate 'create directory dat_dir as ''E:\data\drivers_v1\drivers\'||TELLER_DR||'''';
execute immediate 'create directory log_dir as ''E:\data\drivers_v1\drivers\'||TELLER_DR||'''';
execute immediate 'create directory bad_dir as ''E:\data\drivers_v1\drivers\'||TELLER_DR||'''';

ctt0 := '

          CREATE TABLE DRIVER_'||TELLER_DR||'_DEF
          (
          DRIVER_CHAR VARCHAR2(255),
          DRIVER_INT INTEGER,
          RIT INTEGER,
          SEC INTEGER,
          X NUMBER,
          Y NUMBER
          )
          '
          ;

execute immediate ctt0;

        FOR teller_1 IN 1 .. 200 LOOP
                   ctt1 := '
                              CREATE TABLE driver_rit_'||TELLER_1||'
                              (
                              x VARCHAR2 (255),
                              y VARCHAR2 (255)
                              )
                              organization external
                              (
                                 type oracle_loader
                                 default directory dat_dir
                                 access parameters
                                 ( records delimited by 0x''0A''
                                   BADFILE bad_dir:''driver_rit_'||TELLER_1||'_BAD.TXT''
                                   DISCARDFILE dat_dir:''driver_rit_'||TELLER_1||'_DCF.TXT''
                                   LOGFILE dat_dir:''driver_rit_'||TELLER_1||'_LOG.TXT''
                                   SKIP 1
                                   fields terminated by '',''
                                   MISSING FIELD VALUES ARE NULL
                                 )
                              LOCATION ('''||TELLER_1||'.csv'')
                              ) reject limit 2000
                           '
                            ;  

                        execute immediate ctt1;

                        ctt2 := '      
                              insert into DRIVER_'||TELLER_DR||'_DEF
                                (select 
                                ''DRIVER_'||TELLER_DR||''',
                                '||TELLER_DR||',
                                '||TELLER_1||',
                                ROWNUM,
                                X , 
                                Y
                                from driver_rit_'||TELLER_1||'
                                )
                             '
                            ;  
                        execute immediate ctt2;

                        ctt3 := 'drop table driver_rit_'||TELLER_1||'';
                        execute immediate ctt3;

       END LOOP;
END LOOP;
END;

此代码不起作用。 ORA-00955:名称已被现有对象使用 ORA-06512:第16行 00955. 00000 - “名称已被现有对象使用”

谁有建议使用sql或pl / sql脚本?

0 个答案:

没有答案