Я точно не знаю, как обходиться с C #, но в руководстве Npgsql есть пример вроде записи столбца bytea
в файл:
command = new NpgsqlCommand("select blob from t where id = 1);", conn);
Byte[] result = (Byte[])command.ExecuteScalar();
FileStream fs = new FileStream(args[0] + "database", FileMode.Create, FileAccess.Write);
BinaryWriter bw = new BinaryWriter(new BufferedStream(fs));
bw.Write(result);
bw.Flush();
fs.Close();
bw.Close();
Так что вы просто читаете егобазы данных почти как любой другой столбец и записать его в локальный файл.Пример примерно на половине пути вниз по странице, на которую я ссылался, просто поищите «bytea», и вы найдете его.
ОБНОВЛЕНИЕ : Для больших объектов процесс выглядит аналогичноно меньше SQL-иш.Руководство (как указано выше) включает в себя несколько примеров больших объектов:
NpgsqlTransaction t = Polacz.BeginTransaction();
LargeObjectManager lbm = new LargeObjectManager(Polacz);
LargeObject lo = lbm.Open(takeOID(idtowaru),LargeObjectManager.READWRITE); //take picture oid from metod takeOID
byte[] buf = new byte[lo.Size()];
buf = lo.Read(lo.Size());
MemoryStream ms = new MemoryStream();
ms.Write(buf,0,lo.Size());
// ...
Image zdjecie = Image.FromStream(ms);
Найдите в руководстве «большой объект», и вы его найдете.