«errorcode»: «2200», «message»: «type = npgsql.postgresexception, message = 08p01: неверный формат сообщения», «failtype»: «usererror.
Вы можете найти некоторые подсказки в этом старом случае , которое похоже на вашу трассировку ошибок. См. Решение в приведенной выше ссылке: https://github.com/npgsql/npgsql/issues/189#issuecomment-67001166
В основном, если строказначение, которое мы пытаемся сохранить с помощью Npgsql, было получено из MemoryStream.GetBuffer (), оно взорвется, но если оно получено из MemoryStream.ToArray (), оно будет работать нормально.
Это объяснено в официальном document :
Обратите внимание, что буфер содержит выделенные байты, которые могут быть неиспользованы. Например, если строка «test» записана в объект MemoryStream, длина буфера, возвращаемого из GetBuffer, равна 256, а не 4, с неиспользованными 252 байтами. Чтобы получить только данные в буфере, используйте метод ToArray, однако ToArray создает копию данных в памяти.
На данный момент в качестве обходного пути вы можете использоватьCSV-файл, чтобы бытьпосредник. Передача данных с сервера SQL в файлы CSV в хранилище BLOB-объектов Azure. Затем перенесите данные в базу данных postgresql назначения.