代码之家  ›  专栏  ›  技术社区  ›  Chepech

Oracle SQL加载器将数据拆分为不同的表

  •  5
  • Chepech  · 技术社区  · 14 年前

        1            2          3        4             5            6    
    FirstName1 | LastName1 | 4224423 | Address1 | PhoneNumber1 | 1/1/1980
    FirstName2 | LastName2 | 4008933 | Address1 | PhoneNumber1 | 1/1/1980
    FirstName3 | LastName3 | 2344327 | Address1 | PhoneNumber1 | 1/1/1980
    FirstName4 | LastName4 | 5998943 | Address1 | PhoneNumber1 | 1/1/1980
    FirstName5 | LastName5 | 9854531 | Address1 | PhoneNumber1 | 1/1/1980
    

    我的数据库有两个表,一个用于 地址 ,所以我需要存储列 当面和纵队 4和5 在地址中。SQL加载器文档中提供的所有示例都解决了这种情况,但仅适用于固定大小的列,并且我的数据文件是用管道分隔的(不能将其插入到两个不同的数据文件中)。

    有人知道怎么做吗?

    一如既往,我们将深切感谢您的帮助。

    3 回复  |  直到 12 年前
        1
  •  3
  •   Craig    14 年前

    另一个选项可能是将文件设置为 external table 然后运行inserts从外部表中选择所需的列。

        2
  •  1
  •   animuson    10 年前
    options(skip=1)
    load data
    infile "csv file path"
    insert into table person
    fields terminated by ','
    optionally enclosed by '"'
    trialling nullcols(1,2,3,6)
    
    insert into table address
    fields terminated by ','
    optionally enclosed by '"'
    trialling nullcols(4,5)
    
        3
  •  0
  •   maximdim    14 年前

    即使SQLLoader不支持这个(我不确定)也没有什么可以阻止您使用say awk预处理它,然后加载。例如:

    cat 1.dat | awk -F '|' '{print $1 $2 $3 $6}' > person.dat
    cat 1.dat | awk -F '|' '{print $4 $5}' > address.dat