【问题标题】:Loading multiple concatenated CSV files into Qracle with SQLLDR使用 SQLLDR 将多个连接的 CSV 文件加载到 Qracle
【发布时间】:2010-05-04 23:57:42
【问题描述】:

我在一个独立的 CSV 文件中有几个 Postgresql 表的转储,我想将其导入到具有匹配架构的 Oracle 数据库中。我发现了几篇关于如何将数据从一个 CSV“表”分发到多个 Oracle 表的帖子,但我的问题是同一个文件中有几个不同的 CVS“表”。

是否可以在 SQLLDR 控制文件中指定表分隔符或以某种方式标记新表,还是必须在将文件提供给 SQLLDR 之前手动拆分文件?

【问题讨论】:

    标签: oracle sql-loader


    【解决方案1】:

    这取决于您的数据。你如何确定一行的目的地是哪个表?如果您可以根据行中的数据确定哪个表,那么使用 WHEN 是相当容易的。

    LOAD DATA
      INFILE bunchotables.dat
    INTO TABLE foo WHEN somecol = 'pick me, pick me' (
      ...column defs...
    )
    INTO TABLE bar WHEN somecol = 'leave me alone' (
      ... column defs
    )
    

    如果您有某种确定目标表的标题行,那么您将不得不使用另一个实用程序事先将其拆分。

    【讨论】:

    • 是的,这听起来不错 - 这样的事情是否也适用于表格之间的单个标记?我得到的格式如下所示: COPY foo (foo_1, foo_2) FROM stdin; 1 2 \。从标准输入复制 bar (bar_1, bar_2); 1 2 \.
    • 不,正如我所说,sqlldr 不会处理表之间的单个标记。您需要编写一个 Perl/Python/Ruby/whatever 脚本来扫描您的源文件并将它们拆分为每个表 1 个文件。这应该很容易做到。但是您并没有真正向我们提供足够的信息来帮助您解决这个问题。
    • 哦,是的,在评论之前阅读完整的帖子会有所帮助:) 感谢您的回答和欢呼!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多