我正在使用 sqlldr 加载一个文件,该文件的字段之一是数值。
问题在于,在某些记录中,数字有逗号,而在其他记录中,则没有。
所以做类似的事情
num "to_number(:num, '999,999,999.99')",
Run Code Online (Sandbox Code Playgroud)
用逗号加载记录,但不加载那些没有逗号的记录,并且正在做
num "to_number(:num)",
Run Code Online (Sandbox Code Playgroud)
只加载那些没有逗号的。
有没有办法告诉 Oracle (sqlldr) 逗号是可选的?
在我们的数据提要中,我们有一堆 XML 文件以及大量平面文件要放入 Oracle11g 数据库中。我们将 XML 扁平化为分隔文件,并使用 SQLLoader 加载整个文件集。
我想尝试通过 TABLE ORGANIZED EXTERNALLY 进行概念验证加载,但我需要向 DBA 提出一个令人信服的案例,即它不会对服务器做一些邪恶的事情。我拥有的唯一合理的测试文件是 400-600 MB,在生产中我们会添加一些数 GB 的文件。
有什么风险,我应该如何处理它们,有什么想法吗?
更新:感谢所有有用的评论,伙计们。更多的讨论产生了“我们不能给你在数据库服务器上的 shell 访问来加载文件,我们不能通过 NFS 挂载远程文件”——这些基本上是安全问题。我们处理 PII,因此 DBA 很敏感。此外,有些人担心谁提供存储。
关于为什么 1) 外部表比 sqlloader 好得多或 2) 为什么外部表的测试平台风险低的任何进一步建议的“灌篮高手”论点?
再次感谢,
安德鲁·沃尔夫
当我尝试将数据加载到 Oracle 时,我遇到了SQL*Loader-605: Non-data dependent ORACLE error occurred
错误。
数据(是?)在.txt
文件中,其大小为 95GB。
以下是有关错误的更多详细信息:
用于 ROWS 参数的值从 64 更改为 19
ORA-01653: 无法在表空间 USERS 中将表 M.ECZ 扩展 8192
SQL*Loader-605:发生与数据无关的 ORACLE 错误 -- 加载停止。
继续加载时指定 SKIP=8351926。
表 ECZ:8351925 行已成功加载。0 由于数据错误未加载行。0 行未加载,因为所有 WHEN 子句都失败。0 行未加载,因为所有字段都为空。
为绑定数组分配的空间:245100 字节(19 行)读取缓冲区字节:1048576
跳过的逻辑记录总数:1
拒绝的逻辑记录总数:0
丢弃的逻辑记录总数:0
你有什么建议?谢谢。