【问题标题】:creating PL/SQL procedure with altering timestamp使用更改时间戳创建 PL/SQL 过程
【发布时间】:2014-06-27 08:13:06
【问题描述】:

我需要在一个表中插入大量数据集,并想使用一个过程。所以我想使用一个for循环并插入每个循环。但我必须插入一个“to_timestamp('18.04.14 12:00:00'),每个循环必须减少一秒。

插入看起来像这样:

insert into sv_value(value, timestamp)
values (40, to_timestamp('18.04.14 12:00:00'))

程序应该是什么样的?或者还有其他方法可以插入 100 个 Mio 数据集吗?

提前致谢……

【问题讨论】:

    标签: sql oracle stored-procedures plsql plsqldeveloper


    【解决方案1】:

    您可以使用数字轻松地从时间戳中减去时间。 1 是一天,1/24 是一个小时,依此类推:

    procedure insert_data
    is
      l_timestamp timestamp;
    begin
      l_timestamp := to_timestamp('18.04.14 12:00:00');
      for ... loop
        insert into sv_value(value, timestamp)
          values (40, l_timestamp);
        l_timestamp := l_timestamp - 1 / 24 / 60 / 60;
      end;
    end;
    

    但是,一个 PL/SQL 循环将永远占用 100 个 mio 行。最好创建一小组数据并将其复制几次。复制可能如下所示:

    insert into sv_value(value, timestamp)
    select value, timestamp - 5000 / 24 / 60 / 60
    from sv_value;
    

    它不只是复制数据。它也为时间戳添加了偏移量。如果仔细选择偏移量,您将获得所有唯一行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-31
      • 2021-11-16
      • 2019-02-02
      • 2011-07-15
      • 2013-06-24
      • 2017-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多