gpt4 book ai didi

sql - 在oracle中插入和更新文件中的行

转载 作者:行者123 更新时间:2023-11-29 09:48:16 24 4
gpt4 key购买 nike

我在 linux 中有一个文件,该文件类似于:(我有数百万行)

 date              number      name           id          state
20131110 1089 name1 123 start
20131110 1080 name2 122 start
20131110 1082 name3 121 start
20131114 1089 name1 120 end
20131115 1082 name3 119 end

我在 Oracle 中有一个表,其中包含以下字段:

init_table

start_date
end_date
number
name
id

问题是我读到我可以使用 sqlloader 插入数据,(我有数百万行,然后创建一个临时表来插入,稍后使用触发器更新另一个表不是好吧)问题是我有一个开始日期为 X 的用户,例如数字 1089 的开始日期为:20131110,而该用户的结束日期为:20131114,那么我需要先在我的表中插入开始日期,稍后我找到了结束日期,更新了我要插入的数字表,在我的示例中是 1089,结束日期是:20131114。

如何用 ctl 或其他东西做到这一点。

谁能帮帮我。谢谢

最佳答案

什么版本的甲骨文?

我会使用外部表。定义一个与您的平面文件完全匹配的外部表。然后,您应该能够通过两次传递来解决这个问题,一次插入,一次更新。

应该这样做:

insert into init_table select to_date(date,'YYYYMMDD'),null,number,name,id from external_table where state='start';

update init_table set end_date=(select date from external_table where state='end' and init_table.number=external_table.number);

请注意,您实际上不能拥有名为“日期”或“数字”的列,因此,上面的 sql 实际上不会像写的那样工作。您必须更改这些列名称。

希望对您有所帮助...

关于sql - 在oracle中插入和更新文件中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20003609/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com