如何进行批量插入同时避免在Postgresql中重复

莱昂内尔

我正在由Heroku托管的nodejs(到目前为止免费计划)中工作。

我会自动从其他地方获取数据(这部分工作正常,并且我获取JSON或CVS),我的目标是将它们添加到Prostresql DB中。

虽然,我是数据库管理和Postgresql的新手,但在发布此书之前,我已经进行了研究。我知道COPY命令存在,以及如何插入多个数据而不重复。但是我的问题是两者的混合(加上另一个困难)。

我希望我的问题不会违反规则。


简短版,我需要:

  • 一次添加大量数据
  • 永不重复
  • 重命名源数据和我的表之间的列名

带有详细信息的长版

我收集的数据来自多个来源(目前为2个,但会越来越大),并且非常大(> 1000)。

我还需要将列名重新映射到一个统一系统。在一个源上可以称为“ firstDay”的源在另一个源上可以称为“ dateBegin”,我希望在我的表中将它们称为“ startDate”。

如果我使用的是INSERT,则在构造查询时(在JS中)我会自己照顾。但是,也许COPY可以更好地做到这一点。另外,INSERT似乎有一次可以推送的数据限制,因此我将需要多次划分查询,并可能使用回调或Promise以避免淹没数据库。

最后,我将定期自动更新此数据库,并且它们将重复很多。希望每个数据都有一个唯一的ID,并且我在存储该ID的表中做了一个PRIMARY KEY列。我以为它可以消除重复的任何问题,但我可能是错的。

我的第一个版本很丑陋(for循环使每个循环都产生一个新查询),并且没有用。我正在考虑以递归方式一次处理1000个数据,然后等待回调,然后再发送另一批数据。那样做似乎很笨重而且很费时间。如果我可以选择/重命名/重映射列并避免重复,则COPY看起来很完美。我已经阅读了文档,但没有找到一种方法。


非常感谢,欢迎您的帮助。我还在学习,所以请客气。

扎卡兰金

在使用临时表“暂存”数据然后执行INSERT SELECT将数据从暂存表移动到生产表之前,我已经完成了此操作。

要填充登台表,可以使用批量INSERT或COPY。

例如,

BEGIN;

CREATE TEMPORARY TABLE staging_my_table ( // your columns etc );

// Now that you have your staging table you can bulk INSERT or COPY
// into it from your code, e.g.,
INSERT INTO staging_my_table (blah, bloo, firstDay) VALUES (1,2,3), (4,5,6), etc.

// Now you can do an INSERT into your live table from your staging, e.g.,
INSERT INTO my_table (blah, bloo, startDate)
SELECT cool, bloo, firstDay
FROM staging_my_table staging
WHERE NOT EXISTS (
    SELECT 1
    FROM mytable
    WHERE staging.bloo = mytable.bloo
);

COMMIT;

总是有例外,但这可能只对您有用。

祝你有个好的一天

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何进行批量插入同时避免在Postgresql中重复

来自分类Dev

如何进行批量上传

来自分类Dev

如何避免在MySQL中插入重复项?

来自分类Dev

如何进行插入或删除?

来自分类Dev

MySQL-在避免重复的同时插入行

来自分类Dev

PHP-如何进行插入,直到不存在重复的字段值?

来自分类Dev

避免在mysql插入中重复

来自分类Dev

如何最好避免在CakePHP中插入重复记录?

来自分类Dev

如何通过流插入避免在BigQuery中重复

来自分类Dev

如何最好避免在CakePHP中插入重复记录?

来自分类Dev

如何避免在SQL Server中重复插入动态值

来自分类Dev

如何避免在Xamarin.forms中重复插入ToolbarItem?

来自分类Dev

如何进行重复密钥更新

来自分类Dev

在进行比较时,如何避免在Excel中重复长公式?

来自分类Dev

PostgreSQL 中批量插入的最佳大小

来自分类Dev

Scrapy管道中的批量/批量SQL插入[PostgreSQL]

来自分类Dev

Mongodb检查重复记录以进行批量插入

来自分类Dev

Mongodb检查重复记录以进行批量插入

来自分类Dev

如何进行dict计算并插入python中的另一个优化dict

来自分类Dev

如果可能的话如何进行更新,否则在oracle中插入

来自分类Dev

Mongoose:如何避免插入重复记录?

来自分类Dev

如何进行增量时间跳跃以避免数据丢失

来自分类Dev

如何进行验证以避免在textField中出现空格?

来自分类Dev

如何使用cqlengine在cassandra中批量插入/批量插入?

来自分类Dev

SQL-如何避免在匹配多个列的同时从另一个表插入重复的行

来自分类Dev

JSP页面中的几种形式:如何避免同时重复ID和繁琐的参数处理?

来自分类Dev

如何进行循环以不重复scrapy.request?

来自分类Dev

不使用主键时如何进行插入或替换

来自分类Dev

如果某些值为null,如何进行SQL插入

Related 相关文章

  1. 1

    如何进行批量插入同时避免在Postgresql中重复

  2. 2

    如何进行批量上传

  3. 3

    如何避免在MySQL中插入重复项?

  4. 4

    如何进行插入或删除?

  5. 5

    MySQL-在避免重复的同时插入行

  6. 6

    PHP-如何进行插入,直到不存在重复的字段值?

  7. 7

    避免在mysql插入中重复

  8. 8

    如何最好避免在CakePHP中插入重复记录?

  9. 9

    如何通过流插入避免在BigQuery中重复

  10. 10

    如何最好避免在CakePHP中插入重复记录?

  11. 11

    如何避免在SQL Server中重复插入动态值

  12. 12

    如何避免在Xamarin.forms中重复插入ToolbarItem?

  13. 13

    如何进行重复密钥更新

  14. 14

    在进行比较时,如何避免在Excel中重复长公式?

  15. 15

    PostgreSQL 中批量插入的最佳大小

  16. 16

    Scrapy管道中的批量/批量SQL插入[PostgreSQL]

  17. 17

    Mongodb检查重复记录以进行批量插入

  18. 18

    Mongodb检查重复记录以进行批量插入

  19. 19

    如何进行dict计算并插入python中的另一个优化dict

  20. 20

    如果可能的话如何进行更新,否则在oracle中插入

  21. 21

    Mongoose:如何避免插入重复记录?

  22. 22

    如何进行增量时间跳跃以避免数据丢失

  23. 23

    如何进行验证以避免在textField中出现空格?

  24. 24

    如何使用cqlengine在cassandra中批量插入/批量插入?

  25. 25

    SQL-如何避免在匹配多个列的同时从另一个表插入重复的行

  26. 26

    JSP页面中的几种形式:如何避免同时重复ID和繁琐的参数处理?

  27. 27

    如何进行循环以不重复scrapy.request?

  28. 28

    不使用主键时如何进行插入或替换

  29. 29

    如果某些值为null,如何进行SQL插入

热门标签

归档