Как загрузить огромные данные с JDBC в файл без нехватки памяти? - PullRequest
0 голосов
/ 27 июня 2018

Моя проблема в том, что у меня есть база данных с огромными записями (Doublearrays) ГБ. Таким образом, одна запись составляет до 3 ГБ. Есть ли способ загрузить его «кусочками» и записать в файл?

Я использую Java, драйвер JDBC и postgresql.

Ответы [ 2 ]

0 голосов
/ 12 июля 2018

Таким образом, одна запись занимает до 3 ГБ. Есть ли способ загрузить его «кусочками» и записать в файл?

Единственный «текущий» тип данных в токе (42.2.3 pgjdbc) - это lob (blob, clob).

Если у вас есть double[] на 3 ГБ, у вас есть следующие опции:

  1. Выделите больше памяти (например, -Xmx16G) и просто обрабатывайте ее построчно
  2. Извлечение содержимого массива через несколько выполнений SQL (например, сначала 100 индексов, затем следующие 100 и т. Д.)
  3. Создание запроса на получение для pgjdbc для поддержки потокового API для данных copy (в настоящее время он предоставляет только byte[] readFromCopy(), однако потоковая передача может быть добавлена ​​туда)
0 голосов
/ 28 июня 2018

Я бы предложил использовать копию для загрузки больших объемов данных. Это потребует некоторых усилий на вашей стороне, но, вероятно, стоит потраченных усилий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...