【问题标题】:how to get a variable value and update in DB column using sql loader如何使用 sql loader 在 DB 列中获取变量值和更新
【发布时间】:2015-04-15 08:57:49
【问题描述】:

我有一个文本文件,第一行作为标题记录,其余行是详细信息。对于处理,我不需要存储标题记录的字段,但我需要此标题记录中的日期字段并作为详细记录的一部分存储在 oracle 记录行中。我正在使用提取所有行的详细信息'POSITION' 因为文件是固定长度的

是否可以在 sql loader 控制文件中定义一个变量来将我需要的值存储在内存中,然后在我通过 sql loader 控制文件执行 sql 插入时使用它

我的数据文件如下所示:

193049201209109009238 anjdjtk (Header Record)
1231232 1231386 bkadfjak 989039nnadfsafda(details)
1335635 1237657 lsafnre  234o9034590srgfs(details)

我需要从标题记录中提取位置(7:14) 并在 Oracle DB 中使用此值更新 a 列

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: oracle sql-loader


    【解决方案1】:

    简而言之,答案是否定的。不过我可以想到一些替代方案。

    • 编写一个 PL/SQL 程序而不是使用 SQL*Loader。读取每一行,保存标题中的日期,与详细记录一起插入。

    • 将数据库设计更改为有一个长于详细表的标题表,然后使用多个 INTO TABLE 子句和 WITH 子句(假设有某种方法可以将行标识为标题行)插入适当的表,如果没有其他可使用的标识列,则使用序列值作为连接键。

    • 在任何环境中预处理文件以从标题行获取日期并将其添加到详细信息行的前面,然后使用 SQL*Loader 将日期指定为控制文件中的第一列(跳过然后加载标题行)。

    • 将所有行加载到临时表中,并在加载后运行一个 PL/SQL 过程,该过程将从标题行获取日期并使用它将其写入主表的详细信息行(种类就像第一种选择一样)。

    让我们知道您的想法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-06
      • 2022-01-18
      • 1970-01-01
      • 2013-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      相关资源
      最近更新 更多