问题标签 [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 投票
5 回答
24175 浏览

oracle - 将 sqlloader 连接到服务器时出现错误 704 和 12154

我有一个基于服务器的oracle数据库,我想在服务器上的表中导入数据。我正在尝试使用 sqlloadr(sqlldr) 将所有数据插入到 oracle 数据库中,该数据库位于本地主机上,在这种情况下没有问题,但是当我尝试连接网络服务器(不是本地主机)时出现问题。

我在 localhost 案例中使用的命令:

以下是关于网络服务器的

我在其中创建了一个 tnsnames.ora,如下所示:

但我收到了这个错误:

任何想法将不胜感激

0 投票
3 回答
2307 浏览

oracle - External Table - Discard File not generated as expected

I have an external table with the below definition.

I feed 100 records, of which 50 are valid, 20 are invalid, and 30 do not satisfy the WHEN condition, but I see only 4 or 5 records in my discard file.

0 投票
2 回答
60873 浏览

oracle - 用于多个 infile 的 Oracle Sql Loader 跳过选项

使用 SQL Loader 控制文件时如下:

它会跳过 FIRST.CSV 文件的标题行,但会将标题行从 SECOND.CSV 加载到 Oracle 表中。我的解决方案是将这个控制文件分成两个单独的文件。有什么方法可以遵守一个控制文件?

0 投票
2 回答
1198 浏览

oracle - SQL*Loader 作业意外退出并导致表被 NOWAIT 锁定

我有一个每周报告作业,我必须加载大约 48 个日志,每个日志中包含大约 750k 行数据。为了促进这一点,我们一直在使用一个 Java 作业,它将 SQL*Loader 作为外部进程(使用 ProcessBuilder)一个接一个地运行。然而最近,这个进程在加载过程中异常终止,导致表被锁定,基本上导致进程停止,直到我们可以向 DB 团队开票以终止挂起的会话。是否有比使用 SQL*Loader 更好的方法来处理此上传过程,或者我可以在控制文件或命令行中进行一些更改以阻止它死于可怕的死亡?

在进程开始时,我截断要加载到的表,然后使用以下控制文件运行此命令行:

命令行:

控制文件:

一旦所有日志都完成加载,我会重建表上的索引,然后开始报告过程。似乎它现在只是在随机日志上死去,重新运行它每次都会在不同的点失败。

UNRECOVERABLE 和 SKIP_INDEX_MAINTENANCE 的原因是为了加快加载速度。事实上,加载每个日志仍然需要 7-12 分钟,如果没有这些日志,情况会更糟。总的来说,这个过程从开始到结束大约需要 18 个小时。

0 投票
2 回答
4052 浏览

sql - SQL 加载器控制文件

我有这个加载器控制文件。

目前它在 TEST_CD = 'B' AND TEST_TYPE_CD = 15 时加载数据,但现在我想修改它,以便当 TEST_CD = 'B' 以及 test_type_cd = 15 时也是如此。我不想在其 15 时加载所有 Test_type_cd ..我只想在满足这两个条件时才加载..只要把大括号放在它周围就可以了..请有人告诉我如何修改它..

我想每个人都对我需要的东西感到困惑..我希望第一个条件满足以及第二个和第三个条件作为一个条件不单独行动..例如,如果 test_cd 不等于 A 则加载数据但第二​​个和第三个条件应该作为一个整体..当 test_cd = B 并且 test_type_cd 为 15 时而不是加载数据..我不希望 test_type_cd 申请除 B 之外的任何其他 test_cd ..我有 5 个 test_cd ABCD E ..我只想要B 申请 test_type_cd = 15..

0 投票
1 回答
1637 浏览

sql - c shell脚本中的Sqlldr错误

我在我的 c shell 脚本中执行此操作.. 我的结果设置为 2 而不是 0

这是我的日志信息,我没有看到任何警告.. 有人可以帮我解决这个问题.. 谢谢

0 投票
1 回答
747 浏览

oracle10g - 如何加载具有多个主从数据的文件?

我想使用 sqlldr 将以下文件加载到具有多个主详细信息的 oracle 数据库中。

示例文件:

  1. 第一行有记录类型“1”和表代码“015”
  2. 记录类型为“3”的第一行下方的行具有需要加载到 brand_master 表中的品牌代码和品牌名称
  3. 第 5 行有记录类型“1”和表代码“018”
  4. 记录类型为“3”的第 5 行以下的行具有需要加载到模式表中的模式代码、模式名称和地址

根据我的理解,使用 sqlldr 加载此文件需要遵循以下步骤

  1. 使用 UTL_FILE 包生成两个单独的文件
    • a)brand.txt,其中有记录brandcode,brandname
    • b) pattern.txt,其中有记录 patterncode,pattername,address
  2. 为brand.txt和pattern.txt编写2个单独的控制文件以加载到数据库表中

任何人都可以帮助加载多个表中只有一个控制文件的上述文件吗?

0 投票
1 回答
8500 浏览

performance - 以直接模式运行的 Oracle SQL*loader 比传统的路径加载慢得多

在过去的几天里,我一直在使用 Oracle 的 SQL*Loader 尝试将数据批量加载到 Oracle 中。在尝试了不同的选项组合后,我惊讶地发现传统路径加载比直接路径加载运行得快得多。

关于这个问题的一些事实:

  • 要加载的记录数为 60K。
  • 加载前目标表中的记录数为 7 亿。
  • Oracle 版本是 11g r2。
  • 数据文件包含日期、字符(ascii,无需转换)、整数、浮点数。没有斑点/斑点。
  • 表按哈希分区。散列函数与 PK 相同。
  • 表的并行设置为 4,而服务器有 16 个 CPU。
  • 索引是本地分区的。索引的平行度(来自 ALL_INDEXES)为 1。
  • 目标表上只有 1 个 PK 和 1 个索引。使用索引构建的 PK 约束。
  • 检查索引分区显示分区之间的记录分布非常均匀。
  • 数据文件是分隔的。
  • 使用了 APPEND 选项。
  • 通过 SQL 选择和删除加载的数据非常快,几乎是即时响应。

使用传统路径,加载在大约 6 秒内完成。

使用直接路径加载,加载大约需要 20 分钟。最糟糕的运行需要 1.5 小时才能完成,但服务器根本不忙。

如果启用了 skip_index_maintenance,则直接路径加载将在 2-3 秒内完成。

我尝试了很多选项,但没有一个能带来明显的改进……不可恢复、已排序索引、多线程(我在多 CPU 服务器上运行 SQL*Loader)。他们都没有改善这种情况。

这是我在 SQL*Loader 以直接模式运行期间一直看到的等待事件:

  • 事件:db 文件顺序读取
  • P1/2/3:文件#、块#、块(从 dba_extents 检查它是一个索引块)
  • 等待类:用户 I/O

有谁知道直接路径加载出了什么问题?或者有什么我可以进一步检查以真正挖掘问题的根本原因吗?提前致谢。

0 投票
2 回答
2755 浏览

sql-loader - SQL*Loader 在加载 42 亿条记录后卡住

我们遇到了 sql loader 的问题。我们正在尝试使用 Sql Loader 在某些条件的基础上将大约 46 亿行(近 340 GB)的数据文件加载到 2 个 oracle 表中。但是在加载了 42 亿条记录之后,SQL 加载器进程正在完成而没有抛出任何错误,即使剩余的记录仍要加载也是如此。

也没有废弃或不良记录。SQL Loader 可以加载的记录数是否有限制?在任何地方都找不到任何此类记录。如果有人对此问题有任何线索,请告诉我。

谢谢!!

0 投票
2 回答
18202 浏览

oracle - sqlldr 返回码 - ex_warn

我想知道我的文件是否在数据库中完整加载。

如果您在此处检查返回代码,您可以看到 1 和 3 是失败的。

EX_WARN(return code 2) 包括这种情况:

现在,第一个和第二个是可以管理的。

第三个我不得不在文档中搜索。如果您阅读本文,您会看到“停止加载”包括“致命错误”、“CTRL-C”和“空格错误”。在这种情况下,我可能不会收到任何记录或某些记录被拒绝、EX_WARN 返回代码以及在数据库中加载的文件不完整。

如果没有被拒绝的记录很简单:这是一个中断的加载。我必须退出错误。但是当我有一些记录被拒绝时,我不确定我的文件是否完全加载到数据库中。(有些被拒绝的行对我来说是可以接受的。)我说得对吗?

如果是,解决方案是什么?我如何知道整个表是否已加载到数据库中?