2

我的表数据包含从 sql loader ctl 文件加载的换行符,名为“IPADDRESS”的一列正在加载换行符:

我的 ctl 文件:

 load data
 INFILE 'abc.txt'
 INTO TABLE TABLENAME
 APPEND
 FIELDS TERMINATED BY '\|'
 (MAKE,
 CUST_ID "UPPER(:CUST_ID)",
 IPADDRESS  "REGEXP_REPLACE(:IPADDRESS, '\\.\\D+', '', 1, 0)"
 )

表存储中的数据为 Ex:

Make CUST_ID        IPADDRESS 
------------------------------
C   MPG-VG-ALG01    "9.7.69.37
"
C   MPG-VG-ALG03    "9.7.69.39
"

示例输入文件数据:

C|mpg-vg-alg01.gdl.mex.ibm.com|9.7.69.37 
C|mpg-vg-alg03.gdl.mex.ibm.com|9.7.69.39 
C|mpg-vg-alg04.gdl.mex.ibm.com|9.7.69.23
4

2 回答 2

1

我的问题的答案是: column_name "REPLACE(:column_name,CHR(13),'')";

于 2016-04-21T11:14:34.687 回答
0

是的,一种选择是使用REPLACE()功能,但需要添加更多;

  • 为字符串添加CHAR(data_length)任何数据类型,即使它是类型VARCHAR2
  • 添加CHR(10)换行)以及CHR(13)回车
  • 不要忘记添加TRIM()嵌套的函数来REPLACE()解决额外的问题
  • 使用第三个参数是多余的

column_name CHAR(4000) "REPLACE(TRIM(:column_name),CHR(13)||CHR(10))"'

而且

column_name CHAR(4000) "TRANSLATE(TRIM(:column_name),CHR(13)||CHR(10),' ')"' 

可能被用作替代品。

于 2021-06-13T16:31:54.750 回答