问题标签 [sql-loader]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
oracle - 如何真正跳过列的处理?
为了将数据(从 CSV 文件)加载到 Oracle 数据库中,我使用 SQL*Loader。
在接收这些数据的表中,有一varchar2(500)
列称为COMMENTS
。由于某些原因,我想忽略 CSV 文件中的这些信息。因此,我编写了这个控制文件:
此代码似乎可以正常工作,因为COMMENTS
数据库中的字段始终设置为null
.
但是,如果在我的 CSV 文件中有相应COMMENTS
字段超过 500 个字符限制的记录,我会从 SQL*Loader 收到错误消息:
有没有办法真正排除对我的COMMENTS
字段的处理?
database - 我应该如何为 Oracle SQLLoader (sqlldr) 导入转义引号和换行符?
第一:是的,我知道 CONCATENATE 和 CONTINUEIF,但我可能不够聪明,无法理解文档。我不“明白”他们如何解决我的问题。谢谢...
我必须创建一个文件以通过 sqlldr 导入 Oracle DB。
列需要用“~”分隔(不要问。)在创建文件文件时,我对 sqlldr 在引号和换行符方面的行为方式有一些担忧。
如果一个简单的行包含列值:
我应该如何将其输出到文件中?我的第一个猜测是
我想用 CTL 文件中指定的 FIELDS TERMINATED BY "~" OPTIONALLY ENCLOSED BY '"' 导入会很容易。当我创建文件时,我不知道如何处理 Like 周围的引号。那些应该还要逃走?怎么逃?
额外的奖励问题:这些字段可能包含线刹车。如果写出“原始”,它将变成
CTL 文件中是否有一个选项可用于将它们“缝合”在一起?中断可能发生在不同的列中,并且每条记录或列可能有多个中断。
提前致谢!
c# - 如何处理数据中的换行符以使用 SQL Loader 导入
我是一名前端开发人员,正在编写 C# 应用程序以将数据从 oracle 存储过程导出到文本文件中,以便稍后导入到不同的 oracle 数据库中。数据将使用 SQL Loader (sqlldr) 加载,我正在尝试了解该工具的功能,以便我可以以易于使用 SQL Loader 处理的格式输出文件。
我不确定如何处理列数据中的换行符。某些列是描述,可能包含换行符。我在 SQL Loader 中找不到一个选项来处理数据中出现非恒定数量的换行符的可能性。
看来我可以使用句子值来终止或开始文本文件中的记录,然后使用 CONTINUEIF。然后这给我带来了处理数据中的句子值的问题。
我很犹豫是否要去掉这些中断,因为虽然对于这个特定的应用程序并不重要,但我不想降低数据的保真度。
关于如何解决这个问题的任何想法?
谢谢!
oracle - Oracle Sql Loader 控制文件有问题
我正在尝试使用 sql loader 加载一些数据。这是我的控制/数据文件的顶部:
...许多其他数据线。
问题是 sql 加载器无法识别我指定的数据类型。这是日志文件:
...如果尝试将 char 数据插入数字列,则会出现许多类似的错误。
我试过没有数据类型规范,所有其他数字规范,总是同样的问题。有任何想法吗?
另外,关于它为什么要更改 Rows 参数的任何想法?
oracle - 如何使用 Oracle Sql Loader 使用当前时间戳填充时间戳字段
我正在使用 SQL Loader 读取管道分隔文件,并希望在我正在填充的表中填充 LAST_UPDATED 字段。我的控制文件如下所示:
对于 LAST_UPDATED 字段,我尝试了 SYSTIMESTAMP 和 CURRENT_TIMESTAMP,但都不起作用。然而,SYSDATE 工作正常,但没有给我一天中的时间。
我是 SQL Loader 的新手,所以我对它的功能知之甚少。谢谢。
oracle - 为什么要使用 SQL*Loader 常规加载路径?
我对 SQL*Loader 的常规路径的理解是,它只是简单地生成 INSERT 语句并将它们发送到数据库。使用它而不是仅以编程方式生成 SQL 语句并针对数据库执行它们是否有任何性能优势?
oracle - 为什么我的外键在运行 sqlldr 后被禁用?
在我们的构建过程中,我们运行 sqlldr 以使用一些示例数据填充我们的数据库。在 sqlldr 接触的每个表上,外键在 sqlldr 运行后被禁用。
sqlldr 只会禁用与其他表相关的约束(例如:外键)而不是主键。
SQLLDR 只会重新启用 IT 禁用的约束,而不是您自己做的那些。
我认为这意味着应该启用我的外键。
我们所有的 sqlldr 控制文件都与这个类似:
rows
计数故意大于数据文件中的行数,因为如果它更小,它会损坏我的 primary key。
为什么 sqlldr 没有像文档似乎暗示的那样重新启用我的外键?
如果需要,我可以编写 SQL 以重新启用索引。我想知道为什么会这样。
使用传统的加载路径是一个不错的选择,但它会给我们的构建过程增加 2 分钟,如果可能的话,我想避免这种情况。
oracle - 关于在 SQL*Loader 上使用不可移植的数据类型,我需要了解什么?
我阅读了SQL*Loader参考手册中的部分,这让我有点不知所措。我们的客户都在运行 x86,所以我假设我们不必担心字节顺序。但是,我们确实有一些客户在 32 位上运行,而另一些客户在 64 位操作系统上运行。我到底需要做什么来确保我不会因此而遇到任何问题?
oracle - 如何在我的 SQL*Loader 加载过程中跟踪什么是重新启用触发器?
我似乎在我的日志中看到了很多这样的消息:
这是在我的本地开发机器上,所以不应该有任何其他东西试图插入这些表。我怎样才能找到造成这种情况的原因?有什么方法可以防止触发器被重新启用(至少看看我的脚本中是否有错误)?
sql - 如何转义 SQL Loader 数据文件中的附件字符?
我有一个 SQL*Loader 控制文件,其中有如下一行:
通常,我会使用引号,但如果在多行字符串中使用,这似乎会破坏 emacs 的 python 语法突出显示。问题是我们正在加载一个ADDRESS_LINE_2
列,其中一百万条记录中只有 7,000 条正在加载,因为它们有这样的行:
...(其他列),Apt #2,(其他列)...
这当然会导致错误。有没有办法逃脱封闭的字符,所以这不会发生?还是我只需要选择一个更好的封闭字符?
我浏览了文档,但似乎没有找到答案。