- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在这里看到了很多类似的问题。但我想我的问题是具体的。
这是我为当前版本的 Postgres (9.4) 找到的最佳解决方案: http://www.depesz.com/2012/06/10/why-is-upsert-so-complicated/ http://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#PLPGSQL-UPSERT-EXAMPLE
通常,建议的解决方案基于算法:插入一行,如果发生错误 - 做某事,如果没有 - 插入下一行。
如果我只需要忽略重复错误,我可以这样做吗?
INSERT INTO tablename (id,name,surname) values (1,'john','doe')
INSERT INTO tablename (id,name,surname) values (2,'jane','smith')
而不是这个:
INSERT INTO tablename (id,name,surname) values (1,'john','doe'),(2,'jane','smith')
...如果我必须一次只插入 ~5-30 行?因此,一些插入的行只是返回重复的错误,但其余的将成功执行。实际上,这就是我所需要的。
我尝试通过 EXPLAIN INSERT
一次 100 行和分别 100 行来比较这些方法的成本。可能是我做错了什么,因为当我单独插入行时,它显示执行时间减少了约 25-50 倍,如第一个示例:
INSERT INTO tablename (id,name,surname) values (1,'john','doe')
INSERT INTO tablename (id,name,surname) values (2,'jane','smith')
这是我使用的查询包装器:
BEGIN;
EXPLAIN ANALYZE
-- query or queriES here
ROLLBACK;
所以,问题是,为什么我会收到这个?可能是,EXPLAIN
显示每一行而不是整个查询的执行时间?那么这是有道理的:在这种情况下,批量插入的成本将比单独的命令低约 3 倍。对吧?
最佳答案
with i (id, name, surname) as (values (1,'john','doe'),(2,'jane','smith'))
insert into t (id, name, surname)
select id, name, surname
from i
where not exists (
select 1
from t
where id = i.id and name = i.name and surname = i.surname
)
如果可以以任何其他方式插入数据,则存在上述竞争条件。如果发生错误,请重试。
关于sql - Postgres : best solution to ignore errors during bulk insert,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34489106/
我们在Salesforce中有批量的短信Api代码吗?我在Twilio文档中没有找到。请在相同的指南中找到。。我已经搜索了Twilio文档和谷歌它,但没有找到相同的预期结果。是否有任何相关的帖子、代码
我正在尝试使用 libusb1.0.9 实现用户空间 USB 驱动程序。我有 lpc2148 蓝板(ARM7)。这个板由 Bertrik Sikken 先生加载了开源 USB 堆栈/固件。现在我的用户
在python脚本中, 我正在尝试 elasticsearch.helpers.bulk 来存储多个记录。 我将从另一个软件中获取json格式的字符串,并将其附加到源代码部分中 我通过此answer获
我正在管道中使用附件处理器Attachment Processor。 一切正常,但是我想做多个帖子,然后尝试使用bulk API。 批量工作也很好,但是我找不到如何发送url参数“pipeline =
我正在尝试基于简单的文本文件创建批量文件夹。 os.makedir 有助于创建新文件夹,但我不确定如何将 newpath 变量与文件夹列表合并。以下是我正在尝试的。我知道代码有语法错误。因此需要一些帮
代码如下: -- Created on 2010/11/04 by WANGNAN declare -- Local variables here&nb
我想知道是否使用 BULK COLLECT INTO多个集合保证行中的相应列在嵌套表中具有相同的索引。 例子: CREATE TABLE tx AS SELECT CAST(level AS INT)
我对以下 PL/SQL BULK-COLLECT 进行了修补,它对大表 (>50.000.000) 的更新速度惊人地快。唯一的问题是,它不执行每个表剩余 < 5000 行的更新。 5000 是 FET
我正在使用 BULK INSERT导入 CSV 文件。 CSV 文件中的一列包含一些包含分数的值(例如 1m½f )。 我不需要对分数进行任何数学运算,因为这些值仅用于显示目的,所以我将列设置为 nv
以下是我尝试上载具有一百万条记录的文件时遇到的一些问题。帮助我解决问题。当我尝试在博客中找到解决方案时,所有人都建议修改一些逻辑。但是我直接使用redisgraph-bulk-loader实用程序。
我将不得不使用 SQL Server 的 BULK INSERT 命令重写一些相当旧的代码,因为架构已更改,我突然想到也许我应该考虑改用 TVP 切换到存储过程,但我想知道是什么它可能对性能产生影响。
我需要在 azure 函数中发送批量补丁请求。我已经阅读了他们关于名为“bulk( )”的函数的非常简约的文档,这就是我目前拥有的 const response = await container.i
我试图将文档批量插入索引中。我需要_id等于我要插入的特定字段。我正在使用ES v6.6 POST productv9/_bulk { "index" : { "_index" : "productv
假设我有1000个用户,每个用户有50个文档(每个文档嵌入具有名称和电子邮件的用户对象),我需要为一组用户更新名称和电子邮件。 我想使用Bulk Api,但似乎bulk API仅支持“_id”作为参数
我正在使用curl将apache日志作为文档添加到使用批量API的elasticsearch中。我发布以下内容: {"index": {"_type": "apache", "_id": "123",
我正在使用 Marklogic 8.0.6,我想知道我们是否可以批量删除。例如,我想删除 150 000 个文档,这些文档可以通过 URI 列表或通用属性(字段 COUNTRY=US 和 COLOR=
我正在使用Elasticsearch版本6.7.2,但出现错误429 { "error": { "root_cause": [ {
我是Elasticsearch的新手。 我需要使用NEST api使用批量选项插入文档。 我必须从表中索引5000个文档。以下是我用于批量索引编制的代码。 public ActionResult Cr
我正在尝试使用带有格式文件的 BULK INSERT 将 .CSV 文件导入到 SQL Server 表中。我可以导入它,但任何拉丁字符都会作为奇怪的字符导入。我为自己完成这个个人项目感到非常自豪,但
我试图找出为什么我使用的 BULK INSERT 命令无法识别该命令中使用的 FORMAT 和 FIELDQUOTE 选项。 BULK INSERT dbo.tblM2016_RAW_Current_
我是一名优秀的程序员,十分优秀!