Как обрезать символ новой строки данных столбца в файле ctl загрузчика SQL

Данные моей таблицы содержат новый символ строки, который он загружает из файла ctl загрузчика sql, один столбец с именем «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

person Chaya    schedule 21.04.2016    source источник
comment
Вы можете заменить новую строку или возврат каретки, заменив CHAR(13) или CHAR(10), например: REPLACE(REPLACE('значение столбца', CHAR(13),''),CHAR(10),'')... или вы можете заменить его в регулярном выражении   -  person Rohan Büchner    schedule 21.04.2016
comment
Эта логика не работает   -  person Chaya    schedule 21.04.2016
comment
дайте мне образец входных данных, пожалуйста   -  person Rohan Büchner    schedule 21.04.2016
comment
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   -  person Chaya    schedule 21.04.2016
comment
@ Рохан Бюхнер, я упомянул данные образца файла в своем вопросе, отредактированный .. Пожалуйста, изучите это   -  person Chaya    schedule 21.04.2016
comment
кажется неправильно помеченным SQL Server, но должен быть Oracle   -  person Barbaros Özhan    schedule 13.06.2021


Ответы (2)


Ответ на мой вопрос: column_name "REPLACE(:column_name,CHR(13),'')";

person Chaya    schedule 21.04.2016

Да, одним из вариантов будет использование функции 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),' ')"' 

можно использовать как альтернативу.

person Barbaros Özhan    schedule 13.06.2021