Напишите программно, чтобы если группа из CSV-файла не была найдена, она создавалась

Обновлено: 03.07.2024

Прежде чем импортировать данные, вы должны ознакомиться с тем, что такое графовая база данных, как построить модель данных графа свойств, а также с некоторыми основами языка запросов Cypher. Все эти навыки являются частью процесса импорта данных.

CSV – это файл со значениями, разделенными запятыми, который часто просматривается в Excel или другом инструменте для работы с электронными таблицами. В качестве разделителя могут быть и другие типы значений, но наиболее стандартным является запятая. Сегодня многие системы и процессы уже преобразовывают свои данные в формат CSV для вывода файлов в другие системы, удобных для человека отчетов и других нужд. Это стандартный формат файлов, с которым люди и системы уже знакомы.

Предоставление Neo4j возможности считывать и загружать CSV-файлы помогает упростить получение данных из различных форматов и систем в Neo4j.

Способы импорта CSV-файлов

Существует несколько разных подходов к загрузке данных CSV в Neo4j, каждый из которых имеет разные критерии и функциональные возможности. Выбранный вами вариант будет зависеть от размера набора данных, а также от вашего удобства работы с различными инструментами.

Давайте посмотрим, как Neo4j может читать и импортировать файлы CSV.

Команда LOAD CSV Cypher: эта команда является отличной отправной точкой и обрабатывает наборы данных малого и среднего размера (до 10 миллионов записей). Работает с любой настройкой, включая AuraDB.

Инструмент массового импорта neo4j-admin: инструмент командной строки, полезный для прямой загрузки больших наборов данных. Работает с Neo4j Desktop, образом Neo4j EE Docker и локальными установками.

Инструмент импорта Kettle: отображает и выполняет шаги потока обработки данных и хорошо работает с очень большими наборами данных, особенно если разработчики уже знакомы с этим инструментом. Работает с любой настройкой, включая AuraDB.

Мы кратко расскажем о каждом из этих инструментов, о том, как они работают, и как начать работу с общим вариантом использования. Дополнительная документация и информация для каждого из них также будут включены для помощи в более сложных сценариях. Качество данных также может быть проблемой для любого типа импорта данных в любую систему, поэтому мы рассмотрим некоторые из этих потенциальных трудностей и способы их решения.

Аура Neo4j

Попробуйте на AuraDB

Всегда бесплатно, кредитная карта не требуется.

КОМАНДА ЗАГРУЗИТЬ CSV с помощью Cypher

Предложение LOAD CSV является частью языка запросов Cypher. В нашем руководстве по Cypher есть страница, посвященная его использованию, и множество блогов Neo4j, видео, решения и другие материалы используют эту команду. Он прост в использовании и широко применим. LOAD CSV — это не просто ваш основной механизм приема данных, поскольку он объединяет несколько аспектов в одну операцию.

Поддерживает загрузку/прием данных CSV из URI

Прямое преобразование входных данных в сложную графическую/доменную структуру

Обрабатывает преобразование данных

Поддерживает сложные вычисления

Создает или объединяет объекты, отношения и структуру

Для лучшего контроля вы можете запускать команды LOAD CSV с шифровальной оболочкой, а не в браузере. Более подробная информация находится на странице руководства по оболочке Cypher.

Чтение файлов CSV

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

Локальные файлы могут загружаться с использованием префикса file:/// перед именем файла.
Поскольку AuraDB основана на облаке, этот подход с локальным файлом не будет работать с AuraDB и только с локальными установками.

Безопасность Neo4j имеет настройку по умолчанию, согласно которой локальные файлы могут быть прочитаны только из каталога импорта Neo4j, который отличается в зависимости от вашей операционной системы. Расположение файлов для каждой ОС указано в нашем Руководстве по эксплуатации Neo4j. Мы рекомендуем помещать файлы в каталог import Neo4j, так как это обеспечивает безопасность среды. Однако, если вам нужен доступ к файлам в других местах, вы можете узнать, какие настройки нужно изменить в нашем руководстве. Пути к папкам импорта по умолчанию показаны в этой статье.

Важные советы по загрузке CSV

Необходимо помнить о нескольких вещах, связанных с LOAD CSV, а также о нескольких полезных советах по работе с различными сценариями обработки данных, с которыми вы, вероятно, столкнетесь.

Все данные из CSV-файла считываются как строка, поэтому для преобразования значений необходимо использовать toInteger() , toFloat() , split() или аналогичные функции.

Проверьте заявление об импорте Cypher на наличие опечаток. Метки, имена свойств, типы отношений и переменные вводятся с учетом регистра.

Чем чище данные, тем проще загрузка. Попробуйте выполнить сложную очистку/манипуляцию перед загрузкой.

Преобразование значений данных с помощью LOAD CSV

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

Во-первых, помните, что Neo4j не хранит пустые значения. Нулевые или пустые поля в CSV-файлах можно пропустить или заменить значениями по умолчанию в LOAD CSV .

Предположим, у нас есть этот CSV-файл:

Местоположением по умолчанию для файлов CSV для импорта является каталог импорта для вашего экземпляра Neo4j.

Вот несколько примеров импорта этих данных.

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

Предположим, у нас есть этот CSV-файл:

Условные преобразования можно выполнять с помощью CASE . Вы видели один пример этого, когда мы проверяли нулевые значения или пустые строки, но давайте рассмотрим другой пример.

Оптимизация файла LOAD CSV для повышения производительности

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

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

Для лучшей производительности всегда используйте ПОИСКПОЗ и ОБЪЕДИНЕНИЕ на одной метке с индексированным свойством первичного ключа.

Предположим, мы используем приведенный выше файл company.csv, и теперь у нас есть файл, содержащий людей и компании, в которых они работают:

Вы также должны отделить создание узла и связи от отдельной обработки. Например, вместо следующего:

Вы можете написать это так:

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

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

Разбейте импорт на разделы с помощью PERIODIC COMMIT . Это предложение можно добавить перед предложением LOAD CSV, чтобы указать Cypher обрабатывать только определенное количество строк файла перед очисткой памяти и состояния транзакции. Дополнительную информацию см. на странице руководства PERIODIC COMMIT .

Избегайте оператора EAGER. Некоторые операторы извлекают больше строк, чем необходимо, добавляя дополнительную обработку впереди. Чтобы избежать этого, вы можете запустить PROFILE для своих запросов, чтобы увидеть, используют ли они загрузку EAGER, и либо изменить запросы, либо запустить несколько проходов для одного и того же файла, поэтому он этого не делает. Дополнительную информацию о загрузке EAGER и о том, как ее избежать, можно найти в блоге Марка.

Идея заключается в том, что у меня уже есть CSV-файл, и мне нужно заполнить один столбец в каждой ячейке пользовательской формулой. Это должно быть сделано программно, потому что эти файлы создаются динамически.

Кто-нибудь знает, как это сделать? Спасибо.

6 ответов 6

Я был удивлен, когда попробовал, но Excel сохранит формулу.

Вы даже можете экспортировать формулы в CSV, предварительно отобразив их на экране. (Ctrl-`)

Хотя я утверждаю, что мой первоначальный ответ технически верен, я получил много отрицательных голосов по этому поводу. По-видимому, популярное программное обеспечение для работы с электронными таблицами, такое как Microsoft Excel, Open Office, Libre Office Calc, будет вычислять формулы, введенные в файл CSV. Однако я бы все равно не рекомендовал полагаться на эту возможность.

Исходный ответ:
Формат CSV не поддерживает формулы. Это обычный текстовый формат.

Я не знал об этом, так как не использую файлы CSV. Если бы у меня было это в файле Excel, каковы были бы процессы вставки формул?

Вы можете импортировать формулы в Excel через текстовый файл, используя значения, разделенные запятыми. Просто не забудьте убедиться, что оно имеет суффикс .txt.

Затем выполните импорт.

Мой пример импорта (таблица данных, из текста)

Он импортировался и вычислялся просто отлично

Похоже, что OP нужно сделать это программно, а это больше похоже на ручную работу.

Сэм, в моем случае я создаю довольно объемные электронные таблицы с помощью Perl (вывод в формате, разделенном запятыми). Даже формулы генерируются из моей программы. Казалось простым процессом импортировать данные из произвольной системы, которая уже является csv, и добавлять в нее. Но мне не хватает конкретики, чтобы быть уверенным, что именно происходит с человеком, задающим вопрос.

Вы создаете файл CSV? Если это так, рассмотрите возможность написания фактического файла Excel. (Я предполагаю, что вы импортируете в Excel, поскольку вы использовали термин "ячейка", который не имеет значения в CSV.)

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

Читайте также: