postgresql:如何获取通过批量 copy_from 插入的行的主键?

2023-12-27

目标是这样的:我有一组值要放入表中A,以及一组要放入表中的值B。进入的值B参考值在A(通过外键),所以插入后A值我需要知道如何在插入时引用它们B价值观。我需要这个尽可能快。

我做了B通过批量复制插入值:

def bulk_insert_copyfrom(cursor, table_name, field_names, values):
    if not values: return

    print "bulk copy from prepare..."
    str_vals = "\n".join("\t".join(adapt(val).getquoted() for val in cur_vals) for cur_vals in values)
    strf = StringIO(str_vals)
    print "bulk copy from execute..."
    cursor.copy_from(strf, table_name, columns=tuple(field_names))

这比做一个要快得多INSERT VALUES ... RETURNING id询问。我想为A值,但我需要知道id插入的行数。

有没有办法以这种方式执行批量复制,但要获取id插入的行的字段(主键),以便我知道哪些id与哪个有关联value?

如果没有,实现我的目标的最佳方法是什么?

编辑:根据要求提供示例数据:

a_val1 = [1, 2, 3]
a_val2 = [4, 5, 6]
a_vals = [a_val1, a_val2]

b_val1 = [a_val2, 5, 6, 7]
b_val2 = [a_val1, 100, 200, 300]
b_val3 = [a_val2, 9, 14, 6]
b_vals = [b_val1, b_val2, b_val3]

我想插入a_vals,然后插入b_vals,使用外键而不是对列表对象的引用。


自己生成 ID。

  1. 开始交易
  2. 锁表a
  3. 调用 nextval() - 这是你的第一个 ID
  4. 生成包含 ID 的副本
  5. 表b也一样
  6. 使用您的最终 ID + 1 调用 setval()
  7. 提交交易

在第 2 步,您可能也想锁定序列的关系。如果代码调用 nextval() 并将该 ID 存储在某处,则在使用它时它可能已经在使用中。

稍微偏离主题的事实:如果您有很多后端执行大量插入,则可以设置一个“缓存”设置。这会以块为单位增加计数器。

http://www.postgresql.org/docs/9.1/static/sql-createsequence.html http://www.postgresql.org/docs/9.1/static/sql-createsequence.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

postgresql:如何获取通过批量 copy_from 插入的行的主键? 的相关文章

  • R、Rcpp 与 Armadillo 中矩阵 rowSums() 与 colSums() 的效率

    背景 来自 R 编程 我正在扩展到 C C 形式的编译代码Rcpp 作为循环交换 以及一般的 C C 效果的实践练习 我实现了 R 的等效项rowSums and colSums 矩阵的函数Rcpp 我知道它们以 Rcpp 糖的形式存在 并
  • SQL Server:为什么 ISO-8601 格式的日期依赖于语言?

    我需要一些帮助来理解 SQL Server 中的日期格式处理 如果您尝试以下操作 它将返回正确的结果 SET LANGUAGE English SELECT CAST 2013 08 15 AS DATETIME 2013 08 15 00
  • Java、Oracle 中索引处缺少 IN 或 OUT 参数:: 1 错误

    您好 我使用 Netbeans 8 0 2 和 Oracle 11g Express Edition 在 JSF 2 2 中编写了一个图书馆管理系统 我有几个名为 书籍 借阅者 等的页面 以及数据库中一些名为相同名称的表 我的问题是这样的
  • 如何用约束标记一大组“传递群”?

    在 NealB解决方案之后进行编辑 与以下解决方案相比 NealB的解决方案非常非常快任何另一个 https stackoverflow com q 18033115 answers and 提出了关于 添加约束以提高性能 的新问题 Nea
  • 为什么n++执行速度比n=n+1快?

    在C语言中 为什么n 执行速度快于n n 1 int n n int n n n 1 我们的老师在今天的课堂上问了这个问题 这不是家庭作业 如果您正在开发一个 石器时代 编译器 的情况下 石器时代 n比n 比n n 1 机器通常有incre
  • 使用 PostGIS 拥有通用 GEOGRAPHY 列

    在 PostgreSQL 9 PostGIS 1 5 中 有没有办法创建 通用 GEOGRAPHY 列 我指的是接受 POINT 以及 POLYGON LINESTRING 等的列 到目前为止 我只在 Internet 上看到过像 GEOG
  • IIF(...) 不是公认的内置函数

    我正在尝试在 Microsoft SQL Server 2008 R2 中使用它 SET SomeVar SomeOtherVar IIF SomeBool value when true value when false 但我收到一个错误
  • PostgreSQL - 致命:用户“myuser”身份验证失败[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我刚刚在我的 Ubuntu Box 中安装了 PostGreSQL 我想做的第一件事就是创建一个数据库 我读了文档 http www postgres
  • TimescaleDB 查询选择列值较上一行发生更改的行

    最近刚刚开始使用 TimescaleDB 和 Postgres 来处理大多数数据请求 然而 我遇到了一个问题 即我对时间序列数据的请求效率极低 它是一个可以是任意时间长度 具有特定整数值的数据系列 大多数时候 除非出现异常 否则该值将是相同
  • 更改mysql数据库表中的日期格式

    大家早上好 只是一个简单的问题 在我现有的 MySql 数据库中 我几乎没有包含日期 的列 目前这些是年 月 日格式 但现在我需要将其全部更改为年 月 日格式 我试过了select date format curdate d m Y 但它不
  • SQL 标准是否允许函数名和括号之间有空格

    检查一些 RDBMS 我发现类似的事情 SELECT COUNT a SUM b FROM TABLE 允许 注意聚合函数和括号之间的空格 谁能提供一个指向 SQL 标准本身定义的指针 任何版本都可以 编辑 以上在postgres中工作 m
  • 将DataTable批量插入postgreSQL表中

    在 SQL 中 我们执行类似的操作来批量插入数据表 SqlBulkCopy copy new SqlBulkCopy sqlCon copy DestinationTableName strDestinationTable copy Wri
  • 通过 C# SqlCommand 执行合并语句不起作用

    我正在第一次尝试使用临时表和MERGE语句通过更新 SQL 表SqlCommandC 中的对象 我正在开发的程序旨在首先将大量记录 最多 20k 导出到 Excel 电子表格中 然后 用户可以搜索并替换特定值 并根据需要更新任意多记录中的任
  • 如果 Oracle SQL 中存在视图,则删除视图[重复]

    这个问题在这里已经有答案了 我是 Oracle 数据库系统的新手 Oracle 12c 中以下 SQL 语句的等效项是什么 DROP VIEW IF EXIST
  • SELECT 在 PL/pgSQL 函数中引发异常

    我想在函数内实现循环 但收到此错误 ERROR 查询没有结果数据的目标 代码 CREATE OR REPLACE FUNCTION my function ill int ndx bigint RETURNS int AS DECLARE
  • SQL:如何从一个表中获取另一个表中每一行的随机行数

    我有两个数据不相关的表 对于表 A 中的每一行 我想要例如表 B 中的 3 个随机行 使用光标这相当容易 但速度非常慢 那么我该如何用单个语句来表达这一点以避免 RBAR 呢 要获得 0 到 N 1 之间的随机数 可以使用 abs chec
  • 如何使用一个命令删除 SQL 数据库中的所有索引?

    那么 如何通过一条命令删除 SQL 数据库中的所有索引呢 我有这个命令可以获取所有 20 个左右的 drop 语句 但是如何从这个 结果集 运行所有这些 drop 语句呢 select from vw drop idnex 给我相同列表的另
  • MySQL“列计数与第 1 行的值计数不匹配”是什么意思

    这是我收到的消息 ER WRONG VALUE COUNT ON ROW 列计数与第 1 行的值计数不匹配 这是我的全部代码 我的错误在哪里 DROP TABLE student CREATE TABLE employee emp id I
  • 为什么 Collections.counter 这么慢?

    我正在尝试解决罗莎琳德的基本问题 即计算给定序列中的核苷酸 并在列表中返回结果 对于那些不熟悉生物信息学的人来说 它只是计算字符串中 4 个不同字符 A C G T 出现的次数 我期望collections Counter是最快的方法 首先
  • 正则表达式库基准

    我最近一直想知道正则表达式实现的性能 并且很难想出很多有用的信息 它很容易对浏览器 javascript 正则表达式性能进行基准测试 网上有很多工具 Chrome 和 Opera 中的 javascript 正则表达式实现几乎摧毁了所有其他

随机推荐

  • 使用特定字符串作为每个列名称的前缀?

    我试图manually将某些行映射到其适当类的实例 我知道我需要使用每个表的每一列 并将一个表中的所有这些列映射到给定的类中 但是 我想知道是否有更简单的方法可以做到这一点 现在 我有一堂课叫School和一个名为User 每个类都有一个N
  • 其他浏览器是否实现了条件注释?

    IE 允许您根据浏览器的注释条件检测正在运行的 IE 版本 我实际上不知道他们是否这么称呼 如果不是 有人可以纠正我 css code here 有谁知道其他浏览器是否效仿他们的示例来确定他们正在使用的浏览器版本 css code here
  • 点击或延迟后 jQuery 淡出

    我正在网站上显示一个消息框 我希望能够在单击时或 X 秒后淡出 问题是delay 函数取代了click 功能使得即使您单击关闭您仍然需要等待时间 这是 jQuery document ready function close green c
  • 运行全新安装的 iPython 时出错

    我正在使用 virtualenvwrapper 因此任何人都可以轻松地重现它 但是使用也会发生这种情况pip直接在我的系统上 安装 iPython 后pip 我将无法运行它 注意我使用的是 Python 2 解释器 尽管如果我使用 Pyth
  • 在 iOS9 上编辑 UITextField 时向上移动键盘

    让我的键盘向上移动以发现UITextField在我的 iOS 应用程序中 我曾经实现过这个答案 https stackoverflow com a 6908258 3855618 https stackoverflow com a 6908
  • 无法将文本视图的文本垂直居中

    已解决 我必须添加android fillViewport true 到 ScrollView 解决了文本不垂直居中的问题 我知道这个问题之前已经被回答过很多次了 但我仍然无法将文本视图的文本垂直居中
  • Amazon EC2 作为网络服务器? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我最近对可用的不同托管类型进行了很多思考 我们可以从欧洲的 EC2 实例 我们位于瑞典 获得相当不错的延迟 平均 并且成本相当不错 显然 扩大和
  • 访问 Ember-CLI 嵌套控制器

    这是我的目录结构 controllers restaurant items js index js restaurant js 我的路由器声明 this route restaurants path restaurants this res
  • 快速生成随机集,蒙特卡罗模拟

    我有一组大约 100 个数字 我希望对这组数字执行 MC 模拟 基本思想是我完全随机化该组 对前大约 20 个值进行一些比较 检查 存储结果并重复 现在 实际的比较 检查算法非常快 它实际上在大约 50 个 CPU 周期内完成 考虑到这一点
  • 当客户端关闭与 Django/WSGI 应用程序的连接时,如何防止“IOError:无法写入数据”?

    我有一个 iPhone 应用程序 它使用 Python Django 和 Piston 实现的 Web 服务 通过 WSGI 在 apache 服务器上运行 有时 应用程序会在呼叫完成之前关闭与服务器的连接 当它这样做时 会导致 Tue S
  • 在Python中对字母数字字典键进行排序[重复]

    这个问题在这里已经有答案了 我有一个键字典 如 A1 A15 B1 B15 等 运行dictionary keys sort 会产生 A1 A10 A11 def sort keys dictionary keys dictionary k
  • 通过 jquery geocoder.geocode 进行地址地理编码(400 项)

    我正在尝试解析包含 400 个地址的 json 并在每个位置设置地图图标 我的问题是 当我循环遍历项目时 出现错误 OVER QUERY LIMIT 但是使用 google geocode api 设置位置的最佳方法是什么 我的函数如下所示
  • 单击 URL 将打开默认浏览器

    我已经在我的中加载了一个外部URLWebView 现在我需要的是 当用户单击加载的页面上的链接时 它必须像普通浏览器一样工作并在相同的位置打开链接WebView 但它打开默认浏览器并加载页面 我已经启用了 JavaScript 但它仍然不起
  • 带有 android:autoVerify="true" 的意图过滤器 - 安装时从未验证,默认应用程序链接不起作用

    我在 Android 应用程序中使用branch io SDK 并希望使我的应用程序成为 Android 6 上分支链接的默认处理程序 如下所述here http developer android com training app lin
  • Java 库类的源代码

    在哪里可以找到 Java 库类的源代码 我的意思是课程rt jar 平台 Windows 对于具有单独 JRE 和 JDK 下载的旧版本 Java 请下载 JDK 公共类的源代码位于 src zip 中
  • 计算列中值的频率[重复]

    这个问题在这里已经有答案了 我有不同项目的数据 这些项目的路径 A E 和可能性 不太可能 可能 或 可能 数据如下所示 但有更多项目 因此有更多行 Project Pathway Likelihood 1 Red A unlikely 2
  • 使用 Ghostscript 将 PDF 转换为 PostScript:大文件打印时出现问题

    我目前正在使用 Ghostscript 将 500 页 PDF 文件转换为 PostScript 我使用的是 Windows 7 Ghostscript x64 v 9 16 和柯达 Digimaster 商业打印机 我使用 GhostSc
  • Firestore 复合查询 <= & >=

    我需要查询 firestore 集合中开始时间 是一个数字 为的条目 gt slot start和和 lt slot end 像这样 collection Entries ref gt ref where timeStart gt slot
  • 无法模拟 API 请求

    设置起来非常困难开玩笑测试模拟 https github com jefflau jest fetch mock在我的 TypeScript 项目中 我想知道是否有人可以指出我正确的方向 我有一个看起来像这样的函数 检索数据 ts impo
  • postgresql:如何获取通过批量 copy_from 插入的行的主键?

    目标是这样的 我有一组值要放入表中A 以及一组要放入表中的值B 进入的值B参考值在A 通过外键 所以插入后A值我需要知道如何在插入时引用它们B价值观 我需要这个尽可能快 我做了B通过批量复制插入值 def bulk insert copyf