如何在 sqlldr 的输入文件中不存在的表中插入值?
Posted
技术标签:
【中文标题】如何在 sqlldr 的输入文件中不存在的表中插入值?【英文标题】:How to insert value in table which is not present in input file for sqlldr? 【发布时间】:2017-05-09 08:52:26 【问题描述】:考虑如下表结构:
CREATE TABLE TEST_TABLE
(
FIELD_1 VARCHAR2(15) NOT NULL,
SYS_CREATION_DATE DATE NOT NULL,
FIELD_2 VARCHAR2(25) NOT NULL,
FIELD_3 VARCHAR2(25)
)
输入文件:input.txt - 它不包含 SYS_CREATION_DATE 它有 FIELD_1,FIELD_2,FIELD_3
111111111111111,12345,67890
控制文件:control.txt
load data
infile "input.txt"
append
into table TEST_TABLE
fields terminated by ','
trailing nullcols
(
FIELD_1 ,
SYS_CREATION_DATE "SYSDATE",
FIELD_2 ,
FIELD_3
)
运行后的现在
sqlldr userid="uid/pass@ins" control="control.txt"
以下条目已插入
-------------------------------------------------------------
| FIELD_1 | SYS_CREATION_DATE | FIELD_2 | FIELD_3 |
-------------------------------------------------------------
| 111111111111111 | 5/9/2017 2:03:03 PM | 67890 | |
-------------------------------------------------------------
FIELD_3 以 NULL 的形式出现,我想这是因为文件和表中的字段对齐方式不同。
那么可以做些什么来插入下面的条目
-------------------------------------------------------------
| FIELD_1 | SYS_CREATION_DATE | FIELD_2 | FIELD_3 |
-------------------------------------------------------------
| 111111111111111 | 5/9/2017 2:03:03 PM | 12345 | 67890 |
-------------------------------------------------------------
【问题讨论】:
【参考方案1】:请试试这个,应该可以的
load data
infile "input.txt"
append
into table TEST_TABLE
fields terminated by ','
trailing nullcols
(
FIELD_1 ,
FIELD_2 ,
FIELD_3 ,
SYS_CREATION_DATE "SYSDATE"
)
【讨论】:
以上是关于如何在 sqlldr 的输入文件中不存在的表中插入值?的主要内容,如果未能解决你的问题,请参考以下文章
如果 mysql 数据库中的表中不存在,则更新或插入多条记录
如何仅从 PostgreSQL 的内部联接中不存在 id 的表中选择行?