【问题标题】:Split CSV columns in CTL file SQL Loader在 CTL 文件 SQL 加载器中拆分 CSV 列
【发布时间】:2015-04-23 05:15:57
【问题描述】:

我的一个 CSV 文件中有 1617 列。 Oracle 限制每个表 1000 列,所以我创建了 2 个表。

表 1:900 列 表 2:717 列

我只有 1 个 CSV 文件,它是 7 GB 的大文件。我需要使用 sql loader 将这个文件加载到我的数据库中。

我想要一个可以为我执行上述操作的控制文件,即使用前 900 列并加载到表 1 中,然后将接下来的 717 列加载到表 2 中。

【问题讨论】:

    标签: oracle csv sql-loader


    【解决方案1】:

    我认为你不能用一个控制文件来做到这一点。您可能必须使用 2 个控制文件。第一个将 901 到 1617 列设置为 FILLER 加载到表 1,另一个将列 1 到 900 设置为 FILLER 加载到表 2。运行 sqlldr 两次,每个控制文件都指向同一个数据文件。确保您在两者上都有主键列,以便以后加入它们。

    使用包装程序进行预处理或某种类型的预处理,以根据需要拆分文件。

    或通过可以逐行读取文件并根据需要插入的程序加载。

    无论您做什么,都将成为维护的噩梦,处理那么多列。这里似乎需要进行一些适当的数据规范化,但我不得不处理我无法更改的供应商数据,所以如果是这种情况并且你正在加载到临时表中进行进一步处理,我很同情你。

    有关生成控制文件的存储过程,请参阅这篇文章。稍微调整一下你的情况,应该会有很大帮助:46 Control Files for SQL Loader

    【讨论】:

    • 是的。我们在 11gR2 上。我相信它是在 8i 中添加的,但不要引用我的话。
    • 我在第一个表中没有列,所以如果我设置填充符,它会抛出错误吗?
    • 我不明白。试试看!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    相关资源
    最近更新 更多