Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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
将csv中的部分数据插入oracle表_Oracle_Csv_Oracle11g_Sql Loader - Fatal编程技术网

将csv中的部分数据插入oracle表

将csv中的部分数据插入oracle表,oracle,csv,oracle11g,sql-loader,Oracle,Csv,Oracle11g,Sql Loader,我有一个CSV(管道分隔)文件,如下所示 ID|NAME|DES 1|A|B 2|C|D 3|E|F 我需要将数据插入一个临时表,在这个临时表中我已经有了SQLLODER,但是我的表只有一列。下面是从csv加载的控制文件配置 OPTIONS (SKIP=1) LOAD DATA CHARACTERSET UTF8 TRUNCATE INTO TABLE EMPLOYEE FIELDS TERMINATED BY '|' TRAILING NULLCOLS ( NAME ) 如何仅从c

我有一个CSV(管道分隔)文件,如下所示

ID|NAME|DES
1|A|B
2|C|D
3|E|F
我需要将数据插入一个临时表,在这个临时表中我已经有了SQLLODER,但是我的表只有一列。下面是从csv加载的控制文件配置

OPTIONS (SKIP=1)
LOAD DATA 
CHARACTERSET UTF8
TRUNCATE
 INTO TABLE EMPLOYEE
 FIELDS TERMINATED BY '|'
TRAILING NULLCOLS 
(
NAME
)
如何仅从csv的第二列中选择数据,并仅插入表
EMPLOYEE
中的一列

如果您有任何问题,请告诉我。

如果您正在使用,您不需要在数据库表中有匹配的列-这是重点,真的-只要您知道您感兴趣的字段始终是第二个字段,如果文件中有额外字段,您不需要修改控制文件,你只是从不指定它们

这样就可以了,只需添加一个filler ID字段和显示的三个字段数据文件:

OPTIONS (SKIP=1)
LOAD DATA
CHARACTERSET UTF8
TRUNCATE
 INTO TABLE EMPLOYEE
 FIELDS TERMINATED BY '|'
TRAILING NULLCOLS
(
IF FILLER,
NAME
)
Dmoe’d与:

SQL> create table employee (name varchar2(30));

$ sqlldr ...

Commit point reached - logical record count 3

SQL> select * from employee;

NAME                          
------------------------------
A
C
E

向数据文件中添加更多字段没有任何区别,只要它们位于您实际感兴趣的字段之后。这同样适用于临时/临时表,只要CSV文件在数据库服务器上可用。

数据文件中需要从加载中排除的列可以定义为填充

在给定的示例中,请使用以下命令。列出所有输入字段,并向需要从加载中忽略的列添加填充符,例如。 ( ID填充程序, 名称 DES填料 ) 这里的另一个问题是忽略CSV中的标题行,所以只使用选项子句,例如。 选项(跳过=1) 加载数据

问候,,
R.

能否加载所有列,然后在加载数据后删除不需要的列?这不是一个完美的解决方案,但它应该可以工作。这是可能的,即使在这种情况下,我们也可以使用
Filler
,它将跳过加载所有其他列。但为此,我需要创建单独的列。另一方面,文件中的列数是动态的,但我只需要从第2列开始grep@Timbiegeleisenth问题中的控制文件已经有了
跳过
。您也不需要在所有您关心的内容之后添加填充列。