c++ - 使用多个插入准备查询
问题描述
我需要在表单上创建一个包含多个插入的查询
insert into product_ohlcv_history (broker_id, product_id, timestamp, open, high, low, close, volume, timeframe)
values
(1, 'XX', 2020-01-16T10:00:00.000z", 4, 5, 6, 7, 8),
(1, 'XX', 2020-01-16T10:01:00.000z", 4, 5, 6, 9, 8),
(1, 'XX', 2020-01-16T10:02:00.000z", 4, 5, 6, 9, 8)
on conflict (broker_uuid, product_id, timestamp) do nothing;
插入的数量是未知的,所以在一个查询中我可以插入十个值,在另一个插入 90 个值等等(它们取决于从另一个来源检索的数据)。
我想在 libpqxx 中为您的查询准备一个语句。我已经准备好了声明
pqxx::connection* m_connection;
// ...
namespace Query {
namespace Name {
constexpr auto InsertOHLCList{ "insertohlcvlist" };
} // namespace Name
constexpr auto InsertOHLCList{ "insert into product_ohlcv_history (broker_uuid, product_id, timestamp, open, high, low, close, volume, timeframe) values $1 on conflict (broker_uuid, product_id, timestamp) do nothing;" };
} // namespace Query
m_connection->prepare(Query::Name::InsertOHLCList, Query::InsertOHLCList);
然后我在我的代码中创建值字符串并将其替换为$1
. 问题是 libpqxx 在准备语句时给了我一个错误:
Failure during '[PREPARE insertohlcvlist]': ERROR: syntax error at or near "$1"
LINE 1: ...open, high, low, close, volume, timeframe) values $1 on conf...
准备具有多个插入的语句的正确方法是什么?
解决方案
推荐阅读
- html - 如何从数据库中填充下拉列表并在选择页面时更新页面?
- audio - ffmpeg 流媒体视频不同步
- c++ - 如何使用 vtk 将窗口坐标映射到对象坐标
- docker - 如果我的主机有 cuda 9,我可以有 cuda 8 的 docker 容器吗
- pywin32 - 有什么方法可以在 python 版本 3.7.1 中安装 pypiwin32
- oracle - Oracle 在视图中优化查询
- javascript - Webpack 不包括构建中的所有必需文件
- sql-server - 我无法在查询中转换字符串比较语句:msSQL 到 SQLite
- python - on_message 函数重复,Discord.py 重写
- reactjs - 组合框不接受第一个更新事件