sql >> データベース >  >> RDS >> PostgreSQL

リモートマシンからlibpqを使用してPostgreSQLにバイナリラージオブジェクト(BLOB)を挿入します

    ブロブには2つのタイプがあります PostgreSQLの場合— BYTEA およびLarge Objects 。大きなオブジェクトはテーブルに結合できないため、使用しないことをお勧めします。

    BYTEAの場合、libpqで次のようなものを使用します:

    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. MySQLでのPostgreSQLのarray_agg()およびarray_to_string

    2. mysqlデータベースへの画像のアップロードが機能しない

    3. SQLServer2008のXMLフィールドから値を選択します

    4. ActiveRecordエラー:SAVEPOINTactive_record_1が存在しません