ruby - 如何找出复制的行数?

标签 ruby postgresql pg rowcount postgresql-copy

我正在运行一个 Postgres 数据库,并在 ruby​​ 中使用 COPY 命令将数据加载到一个临时表中。

看起来像这样:

@conn = PG.connect(dbname: 'load_test')
res = @conn.async_exec <<-QUERY
  COPY tmp_inventory FROM '#{infile_location}' CSV HEADER DELIMITER '|'
QUERY

有一条 INFO 日志消息,其中包含添加的总行数。我如何从 ruby​​ 中以编程方式获取此数字?

最佳答案

您可以在 Postgres 中执行此操作或直接从 Ruby 中的 Postgres 界面获取它:

使用 ruby

更具体地说是类 PGresult .

我不是 Ruby 专家,但正在研究文档 herehere ,似乎方法 cmd_tuples 只适用于 INSERT|DELETE|UPDATE|MOVE|FETCH

还有常量 PGRES_COPY_OUTPGRES_COPY_IN(针对手头的情况)。好像the method result_status returns the respective value :

Returns the status of the query. The status value is one of:

PGRES_EMPTY_QUERY
PGRES_COMMAND_OK
PGRES_TUPLES_OK
PGRES_COPY_OUT
PGRES_COPY_IN
PGRES_BAD_RESPONSE
PGRES_NONFATAL_ERROR
PGRES_FATAL_ERROR
PGRES_COPY_BOTH

因此,在您的示例中,您应该通过以下方式获得所需的值:

res.result_status

使用 Postgres

您将使用 PL/pgSQL 函数以编程方式访问 COPY 处理的行数(需要 9.2+ 版本):

关于ruby - 如何找出复制的行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26764785/

相关文章:

ruby-on-rails - Rails 每当 cron

python - Where 子句错误 : column does not exist

asp.net-mvc - 即使设置了有效数据, Entity Framework 也会在 saveChanges 时提示必填字段

javascript - 我们总是可以使用 knex 和 postgres 将日期列作为字符串 (varchar) 获取吗?

node.js - 如何正确使用 NodeJS、socket.io、postgres 插入和更新 sql?

ruby - 如何使用 Ruby 处理来自 Postgres 的 "incomplete multibyte character"错误?

ruby - 清理 Ruby 代码

ruby - 如何以 rspec 方式改进此 RSpec 代码?

ruby-on-rails - 您可以将 Redis 与 Resque 一起使用吗?

postgresql异常运算符不存在: uuid = bytea