Может ли neo4j-admin import пропустить строки CSV, где есть ошибка импорта? - PullRequest
0 голосов
/ 12 октября 2019

Я пытаюсь использовать neo4j-admin import для заполнения базы данных neo4j входными данными CSV. Согласно документации, экранирование кавычек с \" не поддерживается, но мои входные данные имеют эти и другие аномалии форматирования. Следовательно, neo4j-admin import явно не подходит для ввода CSV

> neo4j-admin import --mode=csv --id-type=INTEGER \
>    --high-io=true \
>    --ignore-missing-nodes=true \
>    --ignore-duplicate-nodes=true \
>    --nodes:user="import/headers_users.csv,import/users.csv"
Neo4j version: 3.5.11
Importing the contents of these files into /data/databases/graph.db:
Nodes:
  :user
  /var/lib/neo4j/import/headers_users.csv
  /var/lib/neo4j/import/users.csv

Available resources:
  Total machine memory: 15.58 GB
  Free machine memory: 598.36 MB
  Max heap memory : 17.78 GB
  Processors: 8
  Configured max memory: -2120992358.00 B
  High-IO: true


IMPORT FAILED in 97ms. 
Data statistics is not available.
Peak memory usage: 0.00 B
Error in input data
Caused by:ERROR in input
  data source: BufferedCharSeeker[source:/var/lib/neo4j/import/users.csv, position:91935, line:866]
  in field: company:string:3
  for header: [user_id:ID(user), login:string, company:string, created_at:string, type:string, fake:string, deleted:string, long:string, lat:string, country_code:string, state:string, city:string, location:string]
  raw field value: yyeshua
  original error: At /var/lib/neo4j/import/users.csv @ position 91935 -  there's a field starting with a quote and whereas it ends that quote there seems to be characters in that field after that ending quote. That isn't supported. This is what I read: 'Universidad Pedagógica Nacional \"F'

Мой вопрос заключается в том, можно ли пропустить или игнорировать плохо отформатированные строки файла CSV, для которых neo4j-admin import выдает ошибку. Такая опция не доступна в документах . Я понимаю, что решения существуют с использованием LOAD CSV и что CSV должны быть предварительно обработаны перед импортом. Примечание. Я могу успешно импортировать CSV, когда исправляю проблемы с форматированием.

1 Ответ

1 голос
/ 23 октября 2019

Возможно, стоит описать различия между оптовым импортером и LOAD CSV.

LOAD CSV выполняет транзакционную загрузку ваших данных в базу данных - это означает, что вы получаете все преимущества ACID и т. Д. Это приводит к тому, что это не самый быстрый способ загрузки данных.

Оптовый импортер предполагает, что данные находятся в формате, готовом к базе данных, что вы имели дело с дубликатами, любой обработкой, необходимой для полученияв правильную форму и т. д., и просто извлечет данные как есть и сформирует, как указано в базе данных. Это не транзакционная загрузка данных, и поскольку предполагается, что загружаемые данные уже «готовы к базе данных», они действительно очень быстро принимаются.

Существуют другие варианты импорта данных, но обычно, есливам нужно делать какие-то пропуски / исправления строк при импорте, вы на самом деле не хотите делать это с помощью автономного оптового импортера. Я бы посоветовал вам либо выполнить некоторую предварительную обработку на вашем CSV до использования, neo4j-admin import, либо посмотреть на один из других доступных вариантов импорта, где вы можете указать, как обрабатывать строки с плохим форматированием.

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