libpqを使用してリモートマシンからPostgreSQLデータベースにバイナリデータを挿入する例を挙げてください。 私の2番目の質問は次のとおりです。C++のlibpqより効率的な他のAPIはありますか? おかげリモートマシンからlibpqを使用してPostgreSQLにバイナリラージオブジェクト(BLOB)を挿入する
5
A
答えて
10
PostgreSQLの— BYTEA
とLarge Objects
で塊の2種類があります。大きなオブジェクトを使用することをお勧めしたいと思います。
BYTEAのためには、libpqの中で、このようなものを使用したい:libpqのはCのAPIである一方、
PGresult* put_data_to_tablename(
PGconn* conn,
int32_t id,
int data_size,
const char* const data
) {
PGresult* result;
const uint32_t id_big_endian = htonl((uint32_t)id);
const char* const paramValues[] = { &id_big_endian, data };
const int nParams = sizeof(paramValues)/sizeof(paramValues[0]);
const int paramLenghts[] = { sizeof(id_big_endian), data_size };
const int paramFormats[] = { 1, 1 }; /* binary */
const int resultFormat = 0; /* text */
result = PQexecParams(
conn,
"insert into tablename (id, data) values ($1::integer, $2::bytea)",
nParams,
NULL, /* Types of parameters, unused as casts will define types */
paramValues,
paramLenghts,
paramFormats,
resultFormat
);
return result;
}
1
使用libpqxxは、C++、それを行うための方法です。ここで
はpqxxを使用してそれを行う方法の完全な例です。このようになりlibpqxx使用して短い、関連するC++ラインでHow to insert binary data into a PostgreSQL BYTEA column using the C++ libpqxx API?
:
void * bin_data = ...; // obviously do what you need to get the binary data...
size_t bin_size = ...; // ...and the size of the binary data
pqxx::binarystring bin(bin_data, bin_size);
pqxx::result r = work.prepared("test")(bin).exec();
work.commit();
関連する問題
- 1. PostgreSQL、libpqで浮動小数点を挿入する
- 2. postgresql libpq無理由で空行を挿入する
- 3. libpqを使用してテーブルに浮動小数点数を挿入する
- 4. MathematicaからmysqlにプロットをBLOBとして挿入する
- 5. PHPでMDB2を使用してBLOBデータを挿入する
- 6. html5を使ってサファリブラウザからBLOBをsqliteに挿入
- 7. Javaを使用して画像をcassandra blobに挿入
- 8. Heroku PostgreSQLのBLOBの挿入に失敗しました
- 9. clojure.java.jdbcを使用してpostgresql jsonカラムにデータを挿入
- 10. ASP.netを使用してpostgreSQlデータベースのデータをEXTJsグリッドに挿入
- 11. SQL Server管理スタジオを使用してデータベースにBLOBを挿入する方法
- 12. Pythonを使用してmySQL BLOBにPDFを挿入および取得する
- 13. C#を使用してOracleデータベースにBLOBを挿入してください
- 14. postgresqlデータベースにAzure BLOBストレージを使用
- 15. PostgreSQL 9.5を使用してジオメトリLINE値を挿入
- 16. postgreSQLクライアント(libpq)のセグメント化エラー
- 17. リモートマシンからXcodeを使用する
- 18. ファイルをmysqlに挿入するBlob
- 19. ODBCをBLOBカラムに挿入する
- 20. ActiveRecordを使用してPostgresqlテーブルに配列を挿入する方法は?
- 21. Cを使用してangularjsからデータベースに挿入する#
- 22. ODBCとC++ Netを使用して空のBLOBをSQLite DBに挿入
- 23. PHPを使用してMYSQLからイメージBLOBを挿入および取得する方法は?
- 24. Pythonを使用するとPostgreSQLがデータを挿入するエラー
- 25. OLE DBを使用したBLOBの挿入
- 26. フォームを使わずにYiiにBLOBオブジェクトを挿入する
- 27. JDBCを使ってpostgresqlに値を挿入する
- 28. のPostgreSQL、PG 9.1でlibpqを使用することにより、最大のidから
- 29. データベースから画像を挿入する(BLOB)エコー
- 30. Seleniumを使用してテーブルから行を挿入する
libpqxxと高齢化問題がある注目に値します、いいえ、それは "公式" postgresql C++ apiではなく、サイト上にあります。 – user3791372