0

我有一个基于文本文件中位置的 Oracle SQL Loader 控制文件。一个特定的字段会定期从源中获取省略号'...',这会导致加载表中的回车。无论我要求'...'这些用户不使用多少次,最终都会有人忘记,或者由于人员流动等原因。这是该字段的当前控制文件行:

TRAN_DESC   POSITION(153 : 202)  Char,

是否有任何命令可以添加到此行以忽略省略号等特殊字符?

4

1 回答 1

0

我会想到的REPLACE。这是一个例子。

样品表:

SQL> create table test (id number, tran_desc varchar2(10));

Table created.

控制文件:

load data
infile *
into table test
(id        position(1:2), 
 tran_desc position(3:12) char "replace(:tran_desc, '...', '')"
)

begindata
10LittleFoot
11Big...foot

加载会话和结果:

SQL> $sqlldr scott/tiger control=test2.ctl log=test2.log

SQL*Loader: Release 11.2.0.2.0 - Production on Pon Tra 5 17:03:39 2021

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

Commit point reached - logical record count 2

SQL> select * from test;

        ID TRAN_DESC
---------- ----------
        10 LittleFoot
        11 Bigfoot

SQL>
于 2021-04-05T15:05:52.997 回答