oracle 将CSV文件中的数据插入到表中的SQL加载程序

ryoqjall  于 2022-11-03  发布在  Oracle
关注(0)|答案(1)|浏览(115)

我目前正在使用SQL加载程序将CSV文件中的一些列的数据插入到表中,这些数据将被验证,剩余的列将根据插入的数据自动填充。但是,如果我有一个不必要的额外数据超出了我的必需列,那就是插入到表的其他列中,如果数据在验证后是正确的,那么表的其他列将为空。
我只想从CSV文件中提取某些列,并需要插入到表中。不需要从CSV文件中的其他列加载任何额外的数据。我应该怎么做?
我想知道是否有什么东西我需要包括在这里面!
选项(ERRORS=100000,SKIP=1)加载数据追加到表中emp字段终止于','可选地括起来'"'尾随空列
(Emp_id字符、部门字符、类整数、子类整数)

mcdcgff0

mcdcgff01#

您不必做任何 * 特殊 * 的事情-只需在控制文件中省略所有这些列即可,如下所示:

(Emp_id char, Dept char, Class integer, Subclass integer )

举例来说:示例表只有两列:

SQL> create table test
  2  (emp_id number,
  3   dept_name varchar2(10));

Table created.

控制文件的数据包含一些更多的数据--谈这个:

1,A,some more data,123
2,B,not important,553
    ------------------
    no columns for this in the table

控制文件本身:

LOAD DATA
INFILE *
REPLACE
INTO TABLE test
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
emp_id,
dept_name
)

BEGINDATA
1,A,some more data,123
2,B,not important,553

正在加载会话:

SQL> $sqlldr scott/tiger@orcl control=test45.ctl log=test45.log

SQL*Loader: Release 18.0.0.0.0 - Production on Čet Lis 27 12:55:34 2022
Version 18.5.0.0.0

Copyright (c) 1982, 2018, Oracle and/or its affiliates.  All rights reserved.

Path used:      Conventional
Commit point reached - logical record count 1
Commit point reached - logical record count 2

Table TEST:
  2 Rows successfully loaded.

Check the log file:
  test45.log
for more information about the load.

结果:

SQL> select * from test;

    EMP_ID DEPT_NAME
---------- ----------
         1 A
         2 B

SQL>

如你所见,一切都很好。
如果是相反的情况,也就是说,你想填充CSV文件中不存在的列,你可以使用filler(但是--因为这不是你的问题--忘记它。实际上,记住它,也许你以后会需要它)。

相关问题