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. MathematicaからmysqlにプロットをBLOBとして挿入する
- 4. PHPでMDB2を使用してBLOBデータを挿入する
- 5. html5を使ってサファリブラウザからBLOBをsqliteに挿入
- 6. clojure.java.jdbcを使用してpostgresql jsonカラムにデータを挿入
- 7. ASP.netを使用してpostgreSQlデータベースのデータをEXTJsグリッドに挿入
- 8. SQL Server管理スタジオを使用してデータベースにBLOBを挿入する方法
- 9. C#を使用してOracleデータベースにBLOBを挿入してください
- 10. ファイルをmysqlに挿入するBlob
- 11. ODBCをBLOBカラムに挿入する
- 12. ActiveRecordを使用してPostgresqlテーブルに配列を挿入する方法は?
- 13. postgreSQLクライアント(libpq)のセグメント化エラー
- 14. ODBCとC++ Netを使用して空のBLOBをSQLite DBに挿入
- 15. OLE DBを使用したBLOBの挿入
- 16. フォームを使わずにYiiにBLOBオブジェクトを挿入する
- 17. リモートマシンからXcodeを使用する
- 18. SQLite - BLOBを挿入ステートメントで挿入できますか?
- 19. テキストファイルをBlobデータとしてSQLiteデータベースに挿入します
- 20. InputStreamをPostgreSQLに挿入
- 21. java GUIからpostgresqlデータベースに値を挿入する
- 22. DB2とOracleの両方でjavaを使用してBLOBを挿入
- 23. のPostgreSQL、PG 9.1でlibpqを使用することにより、最大のidから
- 24. PostgreSQLを使用して挿入時に行の一意のIDを生成
- 25. .netによるDB2のストアドプロシージャを使用したBLOBデータの挿入
- 26. ubuntuを通してPostgreSQLのテキストファイルを挿入しますか?
- 27. のPostgreSQL:挿入
- 28. postgresql - カスケードコピー/挿入
- 29. Hibernate上でBLOB列タイプを使用してOracleにファイルを挿入したいのですか?
- 30. NotesSQLドライブを使用してMS SQLからLotus Notesに挿入
libpqxxと高齢化問題がある注目に値します、いいえ、それは "公式" postgresql C++ apiではなく、サイト上にあります。 – user3791372