问题标签 [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.

0 投票
2 回答
16068 浏览

oracle - 如何真正跳过列的处理?

为了将数据(从 CSV 文件)加载到 Oracle 数据库中,我使用 SQL*Loader。

在接收这些数据的表中,有一varchar2(500)列称为COMMENTS。由于某些原因,我想忽略 CSV 文件中的这些信息。因此,我编写了这个控制文件:

此代码似乎可以正常工作,因为COMMENTS数据库中的字段始终设置为null.

但是,如果在我的 CSV 文件中有相应COMMENTS字段超过 500 个字符限制的记录,我会从 SQL*Loader 收到错误消息:

有没有办法真正排除对我的COMMENTS字段的处理?

0 投票
1 回答
3320 浏览

database - 我应该如何为 Oracle SQLLoader (sqlldr) 导入转义引号和换行符?

第一:是的,我知道 CONCATENATE 和 CONTINUEIF,但我可能不够聪明,无法理解文档。我不“明白”他们如何解决我的问题。谢谢...

我必须创建一个文件以通过 sqlldr 导入 Oracle DB。

列需要用“~”分隔(不要问。)在创建文件文件时,我对 sqlldr 在引号和换行符方面的行为方式有一些担忧。

如果一个简单的行包含列值:

我应该如何将其输出到文件中?我的第一个猜测是

我想用 CTL 文件中指定的 FIELDS TERMINATED BY "~" OPTIONALLY ENCLOSED BY '"' 导入会很容易。当我创建文件时,我不知道如何处理 Like 周围的引号。那些应该还要逃走?怎么逃?

额外的奖励问题:这些字段可能包含线刹车。如果写出“原始”,它将变成

CTL 文件中是否有一个选项可用于将它们“缝合”在一起?中断可能发生在不同的列中,并且每条记录或列可能有多个中断。

提前致谢!

0 投票
3 回答
1961 浏览

c# - 如何处理数据中的换行符以使用 SQL Loader 导入

我是一名前端开发人员,正在编写 C# 应用程序以将数据从 oracle 存储过程导出到文本文件中,以便稍后导入到不同的 oracle 数据库中。数据将使用 SQL Loader (sqlldr) 加载,我正在尝试了解该工具的功能,以便我可以以易于使用 SQL Loader 处理的格式输出文件。

我不确定如何处理列数据中的换行符。某些列是描述,可能包含换行符。我在 SQL Loader 中找不到一个选项来处理数据中出现非恒定数量的换行符的可能性。

看来我可以使用句子值来终止或开始文本文件中的记录,然后使用 CONTINUEIF。然后这给我带来了处理数据中的句子值的问题。

我很犹豫是否要去掉这些中断,因为虽然对于这个特定的应用程序并不重要,但我不想降低数据的保真度。

关于如何解决这个问题的任何想法?

谢谢!

0 投票
1 回答
7764 浏览

oracle - Oracle Sql Loader 控制文件有问题

我正在尝试使用 sql loader 加载一些数据。这是我的控制/数据文件的顶部:

...许多其他数据线。

问题是 sql 加载器无法识别我指定的数据类型。这是日志文件:

...如果尝试将 char 数据插入数字列,则会出现许多类似的错误。

我试过没有数据类型规范,所有其他数字规范,总是同样的问题。有任何想法吗?

另外,关于它为什么要更改 Rows 参数的任何想法?

0 投票
4 回答
67970 浏览

oracle - 如何使用 Oracle Sql Loader 使用当前时间戳填充时间戳字段

我正在使用 SQL Loader 读取管道分隔文件,并希望在我正在填充的表中填充 LAST_UPDATED 字段。我的控制文件如下所示:

对于 LAST_UPDATED 字段,我尝试了 SYSTIMESTAMP 和 CURRENT_TIMESTAMP,但都不起作用。然而,SYSDATE 工作正常,但没有给我一天中的时间。

我是 SQL Loader 的新手,所以我对它的功能知之甚少。谢谢。

0 投票
1 回答
522 浏览

oracle - 为什么要使用 SQL*Loader 常规加载路径?

我对 SQL*Loader 的常规路径的理解是,它只是简单地生成 INSERT 语句并将它们发送到数据库。使用它而不是仅以编程方式生成 SQL 语句并针对数据库执行它们是否有任何性能优势?

0 投票
2 回答
4586 浏览

oracle - 为什么我的外键在运行 sqlldr 后被禁用?

在我们的构建过程中,我们运行 sqlldr 以使用一些示例数据填充我们的数据库。在 sqlldr 接触的每个表上,外键在 sqlldr 运行后被禁用。

根据这个 Ask Tom 的帖子

sqlldr 只会禁用与其他表相关的约束(例如:外键)而不是主键。

SQLLDR 只会重新启用 IT 禁用的约束,而不是您自己做的那些。

我认为这意味着应该启用我的外键。

我们所有的 sqlldr 控制文件都与这个类似:

rows计数故意大于数据文件中的行数,因为如果它更小,它会损坏我的 primary key

为什么 sqlldr 没有像文档似乎暗示的那样重新启用我的外键?

如果需要,我可以编写 SQL 以重新启用索引。我想知道为什么会这样。

使用传统的加载路径是一个不错的选择,但它会给我们的构建过程增加 2 分钟,如果可能的话,我想避免这种情况。

0 投票
1 回答
137 浏览

oracle - 关于在 SQL*Loader 上使用不可移植的数据类型,我需要了解什么?

我阅读了SQL*Loader参考手册中的部分,这让我有点不知所措。我们的客户都在运行 x86,所以我假设我们不必担心字节顺序。但是,我们确实有一些客户在 32 位上运行,而另一些客户在 64 位操作系统上运行。我到底需要做什么来确保我不会因此而遇到任何问题?

0 投票
3 回答
1240 浏览

oracle - 如何在我的 SQL*Loader 加载过程中跟踪什么是重新启用触发器?

我似乎在我的日志中看到了很多这样的消息:

这是在我的本地开发机器上,所以不应该有任何其他东西试图插入这些表。我怎样才能找到造成这种情况的原因?有什么方法可以防止触发器被重新启用(至少看看我的脚本中是否有错误)?

0 投票
2 回答
7796 浏览

sql - 如何转义 SQL Loader 数据文件中的附件字符?

我有一个 SQL*Loader 控制文件,其中有如下一行:

通常,我会使用引号,但如果在多行字符串中使用,这似乎会破坏 emacs 的 python 语法突出显示。问题是我们正在加载一个ADDRESS_LINE_2列,其中一百万条记录中只有 7,000 条正在加载,因为它们有这样的行:

...(其他列),Apt #2,(其他列)...

这当然会导致错误。有没有办法逃脱封闭的字符,所以这不会发生?还是我只需要选择一个更好的封闭字符?

我浏览了文档,但似乎没有找到答案。