2016-04-28 4 views
1

Я только что разработал базу данных Pg и вам нужно выбрать способ заполнения моей БД данными, данные состоят из файлов txt и csv, но обычно могут быть любыми типами файлов, содержащих символы с разделителями, m программирование в java, чтобы данные имели одинаковую структуру (есть много разных типов файлов, и мне нужно найти, что представляет собой каждый столбец файла, чтобы я мог связать его с столбцом моей БД). Я думал о двух пути:Эффективный импорт данных PostgreSQL DB

  • Преобразование файлов в один тот же тип файла (JSON), а затем получить БД регулярно проверять файл в формате JSON и импортировать его содержимое.

  • Непосредственно подключитесь к базе данных через JDBC, отправьте строки в БД (мне все еще нужно создать файл резервной копии, содержащий то, что было вставлено в БД, поэтому в обоих случаях создается и записывается файл).

Что бы вы выбрали с эффективностью времени? Я как бы соблазн использовать первый, так как было бы проще обрабатывать json-файл в БД. Если у вас есть другие предложения, которые также приветствуются!

+0

Что вы понимаете под дескриптором json-файла в db? Вы собираетесь хранить чистые json-документы в базе данных? Хотя поле JSONB Postgresql довольно круто, это не идеальный способ использования postgresql. решение nosql было бы лучше. – e4c5

+0

Нет, я имел в виду импорт данных из json, которые я знаю о JSONB, но в моем случае это было бы не очень полезно. –

ответ

1

JSON или CSV

Если у вас есть свобода преобразования данных либо в CSV или в формате JSON, CSV является один выбор. Это связано с тем, что вы сможете использовать COPY FROM для загрузки больших объемов данных сразу в postgresql.

CSV поддерживается COPY, но JSON нет.

Непосредственно вставлять значения.

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

Если вы выберете этот подход, вы можете создать резервную копию с помощью COPY TO. Однако, если вам кажется, что вам нужно создать файл резервной копии с помощью java-кода. Выбор формата в формате CSV означает, что вы можете загружать навалом, как описано выше.

+0

Данные иногда могут быть довольно большими, поэтому лучший предлагаемый подход лучше. Но разве JSON плохо работает с COPY FROM? Указанный метод [здесь] (http://stackoverflow.com/questions/33129526/loading-json-data-from-a-file-into-postgres) занимает немного больше времени, чем использование CSV, но он по-прежнему безопасен? мы просто должны убедиться, что каждая строка в json-файле будет представлять строку в БД (мы в основном загружаем json-файл во временную таблицу, затем извлекаем нужные значения и вставляем их в соответствующий столбец) –

+0

Да, в этом конкретном Например, вся запись загружается как один столбец - поле JSON (теперь оно устарело по полям JSONB). Это не реляционная. Если вы хотите сохранить свои данные таким образом, это вполне возможно и безопасно, но не оптимально. Вы не используете ни одну из функций RDBMS – e4c5

+0

Так что в принципе нет другого метода для получения данных json без прохождения jsonb-поля или чтения целого символа данных json после символа? –

Смежные вопросы