0
我必須從mysql數據庫複製斑點圖像(jpeg)到字段bytea的postgres表。 我用C++ ..我讀從MySQL圖像以這種方式從mysql複製blob到postgres進展不順利(我再也看不到圖像了)
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的)但我不明白爲什麼因爲我做了簡單的複製和粘貼。 任何提示? ?
_postgres string_可能是bytea內容的文本表示。就像使用C++插入圖像一樣,使用C++將其提取到文件中,而不是從某些未指定的vizualization工具中複製/粘貼。 –
我想過這種可能性..我用pgadmin ...用mysql工作臺,我可以看到桌面上的直接圖像,但pgadmin不提供這種東西,所以我嘗試這種方式..我會嘗試 – SUPERALEX
@ DanielVérité我試圖用C++讀取並寫入一個文件,但圖像損壞..而內部的字符串正是我從pgadmin..plus看到的,我從postgres讀取的長度比我在mysql上讀取的長度長:bytea字段是19253字節長,原來是6728 – SUPERALEX