mysql データベースからバイトフィールドを持つ postgres テーブルに blob イメージ (jpeg) をコピーする必要があります。私はc ++を使用します..この方法でmysqlから画像を読み取ります
char* buffer = new char[res2->getInt(1)];
memset(buffer, '\0', res2->getInt(1));
(res->getBlob("att"))->read(buffer,res2->getInt(1));
res2 には LENGHT(blob_field) が含まれます。ファイルにバッファを保存すると、画像が完全に表示されます。その後、postgresテーブルにバッファを書き込みます
const char* const paramValues[] = {buffer};
const int nParams = sizeof(paramValues) / sizeof(paramValues[0]);
const int paramLenghts[] = {buffer_size };
const int paramFormats[] = {1 }; /*binary */
PQexecParams(
conn,
"INSERT INTO images (img) VALUES($1::bytea)",
nParams,
NULL, /* Types of parameters, unused as casts will define types */
paramValues,
paramLenghts,
paramFormats,
0
);
postgresテーブルのbyteaフィールドにデータがありますが、ファイルに手でコピーして貼り付けると、jpeg画像ではないと表示されているため画像が表示されません... postgres文字列はmysqlのものとは異なります(もし私がテキストエディタでmysqlを開きます)しかし、単純なコピーアンドペーストを行ったので理由がわかりません..何かヒントはありますか??