问题标签 [libpqxx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2221 浏览

c++ - 使用 libpqxx 批量加载数据

我需要使用libpqxx将大量数据(大约 7.000.000 个条目)批量加载到 PostgreSQL 数据库中。我已阅读有关如何填充数据库的文档,但我不确定如何在我的情况下使用它。首先我不能使用文件,所以数据库上的COPY是不可能的。在我导入时,我正在加载的数据库和表也需要正常工作。

场景如下:我们定期(大约每月一次)从另一个应用程序获取一个包含所有数据(包括已经存在的条目)的文件。由于条目的数量,不可能检查每个条目是否存在,我们只是批量插入新数据(在预处理之后)。

目前为了处理这个问题,我创建了一个新表,使用来自 libpqxx 的 tablewriter 插入数据(没有事务),然后在事务中我重命名旧表并将新表重命名到正确的位置。

此外,我们不仅需要为一张表执行此操作,还需要为具有不同布局的多张表执行此操作。因此,我试图将表格的写入与日期的解析分开。现在我只需要考虑表的创建。为此,我使用

这样我得到一个类似的表格foo,我不需要真正知道我写作的地方的布局。然而,这给我留下了一个问题,这将产生一个带有索引和约束的表,并且上面的指南说索引会使批量插入变慢。但是,如果我删除索引和约束(或首先不复制它们),我需要一种方法在为原始表设置的相同庄园中重新创建它们。

关于如何快速处理这个问题的任何好的提示?

编辑:

在相关方面:使用我刚刚注意到的数据库,CREATE TABLE上面不会复制任何外键约束,所以我似乎也需要手动指定这些。或者有没有办法将这些与所有其他约束一起处理?

0 投票
1 回答
224 浏览

postgresql - 从 libpqxx 创建 plpgsql 函数

尝试从 libpqxx 中创建函数时,我运气不佳。我尝试使用包含 CREATE OR REPLACE 函数的字符串调用 exec ......但我一直无法获得正确的语法。任何提示或链接?谢谢!

0 投票
3 回答
16182 浏览

c++ - 使用 libpqxx 连接到 Postgres 数据库

我正在使用 libpqxx 通过创建一个类来连接到 postgres 数据库。

我收到错误消息

谁能帮我吗?

谢谢

0 投票
1 回答
862 浏览

c - 识别关于 PostgreSQL 和 libpq 的语句

这可能听起来很傻,但我需要确定哪种 SQL 语句(INSERT、SELECT、UDATE 等)在 PostgreSQL 上已经准备好语句,同时使用 libpq 处理 C 程序。

让我稍微解释一下:我正在 C 上开发一个小型应用程序,使用提供对 PostgreSQL 数据库的访问的 libpq 库。我在 PostgreSQL 上有一个准备好的语句(使用 PQprepare 命令),但我想知道,在运行它之前,什么样的 SQL 语句是(SELECT,...)。

为什么你可能会问?假设应用程序从另一个来源读取 SQL 查询,也就是说,它们不是硬编码的。当然,我可能只是在将应用程序上的 SQL 发送到 PostgreSQL 之前对其进行解析,但对我来说,PostgreSQL 可以为我做这件事会非常方便。

例如,Oracle 通过其 OCI 库可以返回此信息。

0 投票
1 回答
450 浏览

c++ - 如何猜测 libpqxx C++ 库函数抛出的异常类型?

我正在使用 libpqxx,但我坚持以下。

根据文件,可以说 pqxx:connection_base 类抛出异常的某些功能connection_base.hxx

我的问题是:我怎么能猜出抛出了什么样的异常?我应该期待pqxx::exceptionapqxx::sql_error吗?包含文件对我来说似乎没用,而文档,一个 Doxygen 生成的文件显然没有帮助。

0 投票
2 回答
2189 浏览

c++ - 使用 libpq / libpqxx 进行输入清理

我刚刚开始为 PostgreSQL 数据库实现一些客户端软件。

查询将允许来自不受信任来源的输入参数。因此,我需要在实际提交之前对我的交易进行清理。

至于 libpq 我找到了 PQescapeStringConn,这可能确实需要我需要。但是,由于我的代码将用 C++ 编写,因此我更喜欢使用 libpqxx 等价物。我找不到任何相关的东西。(可能除了Escaper,它位于内部命名空间中......)

对于最佳实践、阅读、文档链接等方面的任何建议,我将不胜感激。

0 投票
2 回答
5094 浏览

c++ - libpqxx 连接池

我正在尝试使用 libpqxx 库开发一个非常简单直接的连接池。我对 c++ 还是很陌生,仍然对指针和引用感到很困惑。该类的行为非常简单:拥有一个带有一些已初始化连接的向量,并在需要时将连接弹出并推送到该向量上。由于指针和引用的错误实现,代码有很多错误。你能给我一些提示吗?

编辑:我设法修复了所有编译错误。当我运行主要功能时,它给了我一个分段错误。

上市:

私人的:

};

0 投票
2 回答
483 浏览

c++ - 没有数据库连接的字符串转义

我正在尝试使用字符串转义功能,而无需访问打开的 pqxx::connection。

考虑以下代码:

它抛出我的连接被打破了。如果有另一种方法可以实现这一点(希望没有数据库连接),有人可以给我一个标志吗?我忽略了什么吗?

更新:

我在libpq的文档中找到了为什么此功能可能需要活动连接的可能原因:

与 PQescapeStringConn 的唯一区别是 PQescapeString 不采用 PGconn 或错误参数。因此,它无法根据连接属性(例如字符编码)调整其行为,因此可能会给出错误的结果。此外,它无法报告错误情况。

0 投票
1 回答
1408 浏览

c++ - 使用 notify_listener - libpqxx

我正在尝试使用libpqxx监听通知事件。我从一个扩展的例子开始pqxx::notify_listener

我无法让这个工作。

我尝试将 name 参数切换为
pqxx::notify_listener(c, "my_schema")
pqxx::notify_listener(c, "listen my_schema")以及其他一些参数。

我正在通过 pgAdmin 手动创建 NOTIFY 事件。无论我做什么,仿函数都不会被执行。

0 投票
0 回答
305 浏览

c++ - PQXX 链接错误问题

我成功地为 PostgreSQL 构建了 PQXX。这适用于带有 CODE::BLOCKS IDE 的 Windows 7 和 MinGW 现在经过多次寻找错误后,我有了一个几乎可以链接的程序。我得到这三个奇怪的错误,

fu000001.o:(.idata$2+0xc)||未定义对`libpqxx_a_iname'的引用|

fu000004.o:(.idata$2+0xc)||未定义对`libpqxx_a_iname'的引用|

nmth000000.o:(.idata$4+0x0)||未定义引用` nm __ZTVN4pqxx14connect_directE'|

我有点茫然在这里任何帮助将不胜感激

-罗兰