Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 通过SQLloader插入数字时出错_Oracle_Insert_Sql Loader - Fatal编程技术网

Oracle 通过SQLloader插入数字时出错

Oracle 通过SQLloader插入数字时出错,oracle,insert,sql-loader,Oracle,Insert,Sql Loader,我试图通过SQL*加载器将数值插入Oracle DB,但仍然出现错误: 记录1:已拒绝-表my_表第_1列出错。 ORA-01722:无效号码 插入值的行表单SQL*加载器是 column_1 INTEGER "TO_NUMBER(REPLACE(:column_1, ' ', ''), '99999999D99')" 而我需要插入的值是:30000000,00 如果我移除掩码('9999999d99'),它会插入一个数字,但有问题。插入值为:807415859 有人能帮我理解我做错了什

我试图通过SQL*加载器将数值插入Oracle DB,但仍然出现错误:

记录1:已拒绝-表my_表第_1列出错。 ORA-01722:无效号码

插入值的行表单SQL*加载器是

column_1  INTEGER  "TO_NUMBER(REPLACE(:column_1, ' ', ''), '99999999D99')" 
而我需要插入的值是:
30000000,00

如果我移除掩码(
'9999999d99'
),它会插入一个数字,但有问题。插入值为:
807415859


有人能帮我理解我做错了什么吗?

经过几次测试后,答案是:

column_1 "to_number(replace(replace(:column_1, ',', '.'), ' ', ','), '99999999.99')"

您可能会发现
TRANSLATE()
函数更简单。一步将逗号转换为句点,将空格转换为NULL。这样测试:

SQL> select translate('30 000 000,00', ', ', '.') fixed
    from dual;

FIXED
-----------
30000000.00

SQL>
那么完整的答案是:

column_1 "to_number(translate(:column_1, ', ', '.'), '99999999.99')"

请务必添加一条注释,说明空间需要是最后一个

您是否尝试将掩码更改为“99 999 999D99”而不是进行替换?您的SQL*加载器行将看起来像-column_1 INTEGER“TO_NUMBER(:column_1,'99 999 999D99')”与插入值
807415859
?@Maheswaran Ravisankar.csv文件中的实际值是'30000000,00'@vmachan:如果我应用您提到的更改,我有以下错误:记录1:Rejected-表my_表第_1列出错。ORA-01481:无效的数字格式模型