【发布时间】:2019-08-10 22:30:57
【问题描述】:
我有一张这样的桌子:
email (primary-key) | first_contact_date | last_contact_date | due_date | status
用户可以将 Excel 电子表格(从不同的应用程序)上传到表格中。 excel包含:
email | first_contact_date | last_contact_date
加载后,用户可以更改(更新)状态和截止日期。
但是,大约每周一次,用户将上传包含新旧记录的最新 Excel 电子表格。换句话说,一些行已经存在于表中并且已经被处理。
因此,我们无法删除现有记录。而是:
- 如果记录是新的,插入
- 如果表中已经存在记录(即电子邮件存在),那么我们需要更新last_contact_date
Excel 电子表格可以包含 1,000 到 50,000 行。
将记录插入 Oracle 的最有效方法是什么?在 mySQL 中,我只是使用带有“重复更新”的批量插入,但 Oracle 没有此功能。
最好的方法是什么?
任何帮助表示赞赏。
【问题讨论】:
-
Oracle SQL 通过
MERGE语句具有这种能力。但是您是在询问原始 SQL 语句,还是需要通过您的框架使用此功能? -
它在多个地方使用,但我只需要查看一种有效的语法,我就可以从那里获取它。我目前正在从 MySQL 迁移到 Oracle,这是一段不容易迁移的代码。谢谢!
标签: plsql yii2 oracle12c on-duplicate-key batch-insert