代码之家  ›  专栏  ›  技术社区  ›  Vladiat0r

如何在时间戳>12345678900时加载到oracle

  •  0
  • Vladiat0r  · 技术社区  · 15 年前

    但是,我不想加载整个文件,我只需要其中一半的timestamp>一些参数化的时间戳。

    似乎sqlldr只允许=和<&燃气轮机;when子句中的条件。加载文件然后删除不需要的记录所需的时间太长。

    除了使用sqlldr之外,是否还有其他性能相当的替代方法(我已经在使用direct=true。)

    我正在考虑使用awk来创建一个包含我需要的数据的文件副本,awk在这方面相当有效,但是在我走这条路之前,我想我应该在这里征求更好的建议。

    1 回复  |  直到 15 年前
        1
  •  0
  •   Adam Musch    15 年前

    这个 note on asktom (search for "magic") 似乎表明在控制文件中使用INFILE“-”将允许重定向,如:

    awk [various switches] sourcefile | sqlldr [sqlldr options]
    

    但我还没测试过。

    假设您可以访问数据库服务器上的文件系统,则可以使用数据文件的外部表规范,然后使用SQL从外部表“加载”数据。类似地,您可以将数据加载到暂存表中;然后运行SQL脚本

    INSERT INTO TARGET_TABLE 
    SELECT * FROM STAGING_TABLE 
     WHERE TIMESTAMP > :PARAMETER;
    TRUNCATE TABLE STAGING_TABLE;