如何在 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 数据库中的表中不存在,则更新或插入多条记录

如果 iPhone 应用程序中不存在,则在表中插入记录

如何获取另一个表中不存在的表的记录?

如何仅从 PostgreSQL 的内部联接中不存在 id 的表中选择行?

MySQL插入更新_ON DUPLICATE KEY UPDATE

如果记录已经存在于jsp页面的表中,如何获取错误消息