SQL*loader infile替换函数
SQL*loader infile replace function
我正在尝试更改 SQL*loader 文件以用点替换十进制数字中的逗号。
加载程序数据文件的外观
Pamatstudijas,Lauksaimniecibas,4,16.01.2006,70,"5,38"
我的控制文件
load data
infile 'C:\Users\Students\Documents\ricardshercbergs_itia\izmaksas1.dat'
into table kartoteka
fields terminated by "," Optionally Enclosed By '"'
TRAILING NULLCOLS
(stud_veids char,
fakultate char,
kurss Integer External,
izmaksas_datums date 'dd.mm.yyyy',
stipendija Integer External,
kompensacija "REPLACE (:kompensacija,',','.')" Decimal External ,
nauda_kopa ":stipendija+:kompensacija")
这:kompensacija "REPLACE (:kompensacija,',','.')" Decimal External ,
没有像我预期的那样工作。我收到错误:
SQL*Loader-350: Syntax error at line 11.
Expecting "," or ")", found keyword decimal.
kompensacija "REPLACE (:kompensacija,',','.')" Decimal External ,
根据 example control file in the documentation 数据类型的定义出现在列转换之前,即您的规范应该是:
kompensacija Decimal External "REPLACE (:kompensacija,',','.')"
您可能正在使用 REPLACE()
来切换哪个字符是小数点,哪个字符是千位分隔符。如果是这种情况,您可以使用 TO_NUMBER
,这会让您更清楚地知道您在做什么,如果无法进行转换,将会失败并显示正确的错误:
kompensacija decimal external "to_number(:kompensacija, '99D99', 'NLS_NUMERIC_CHARACTERS = '',.''')"
我正在尝试更改 SQL*loader 文件以用点替换十进制数字中的逗号。
加载程序数据文件的外观
Pamatstudijas,Lauksaimniecibas,4,16.01.2006,70,"5,38"
我的控制文件
load data
infile 'C:\Users\Students\Documents\ricardshercbergs_itia\izmaksas1.dat'
into table kartoteka
fields terminated by "," Optionally Enclosed By '"'
TRAILING NULLCOLS
(stud_veids char,
fakultate char,
kurss Integer External,
izmaksas_datums date 'dd.mm.yyyy',
stipendija Integer External,
kompensacija "REPLACE (:kompensacija,',','.')" Decimal External ,
nauda_kopa ":stipendija+:kompensacija")
这:kompensacija "REPLACE (:kompensacija,',','.')" Decimal External ,
没有像我预期的那样工作。我收到错误:
SQL*Loader-350: Syntax error at line 11.
Expecting "," or ")", found keyword decimal.
kompensacija "REPLACE (:kompensacija,',','.')" Decimal External ,
根据 example control file in the documentation 数据类型的定义出现在列转换之前,即您的规范应该是:
kompensacija Decimal External "REPLACE (:kompensacija,',','.')"
您可能正在使用 REPLACE()
来切换哪个字符是小数点,哪个字符是千位分隔符。如果是这种情况,您可以使用 TO_NUMBER
,这会让您更清楚地知道您在做什么,如果无法进行转换,将会失败并显示正确的错误:
kompensacija decimal external "to_number(:kompensacija, '99D99', 'NLS_NUMERIC_CHARACTERS = '',.''')"