Можете да импортирате данни от CSV (стойности, разделени със запетая) файл в база данни Neo4j. За да направите това, използвайте LOAD CSV
клауза.
Възможността за зареждане на CSV файлове в Neo4j улеснява импортирането на данни от друг модел на база данни (например релационна база данни).
С Neo4j можете да зареждате CSV файлове от локален или отдалечен URL.
За достъп до файл, съхранен локално (на сървъра на базата данни), използвайте file:///
URL. В противен случай можете да импортирате отдалечени файлове, като използвате всеки от протоколите HTTPS, HTTP и FTP.
Заредете CSV файл
Нека заредим CSV файл, наречен genres.csv използвайки HTTP протокола. Това не е голям файл — съдържа списък от 115 музикални жанра, така че ще създаде 115 възела (и 230 свойства).
Този файл се съхранява на Quackit.com, така че можете да стартирате този код от вашия браузър Neo4j и той трябва да се импортира директно във вашата база данни (ако приемем, че сте свързани с интернет).
Можете също да изтеглите файла тук:genres.csv
LOAD CSV FROM 'https://www.quackit.com/neo4j/tutorial/genres.csv' AS line CREATE (:Genre { GenreId: line[0], Name: line[1]})
Можете да пропуснете определени полета от CSV файла, ако е необходимо. Например, ако не искате първото поле да бъде импортирано в базата данни, можете просто да пропуснете GenreId: line[0],
от горния код.
Изпълнението на горния оператор трябва да доведе до следното съобщение за успех:
Можете да последвате това със заявка, за да видите новосъздадените възли:
MATCH (n:Genre) RETURN n
Което трябва да доведе до възлите, разпръснати около рамката за визуализация на данни:
Импортирайте CSV файл, съдържащ заглавки
Предишният CSV файл не съдържаше заглавки. Ако CSV файлът съдържа заглавки, можете да използвате WITH HEADERS
.
Използването на този метод също ви позволява да препращате всяко поле по името на колоната/заглавката.
Имаме още един CSV файл, този път със заглавки. Този файл съдържа списък с песни от албума.
Отново, този не е голям файл — съдържа списък от 32 песни, така че ще създаде 32 възела (и 96 свойства).
Този файл също се съхранява на Quackit.com, така че можете да стартирате този код от вашия браузър Neo4j и той трябва да се импортира директно във вашата база данни (ако приемем, че сте свързани с интернет).
Можете също да изтеглите файла тук:tracks.csv
LOAD CSV WITH HEADERS FROM 'https://www.quackit.com/neo4j/tutorial/tracks.csv' AS line CREATE (:Track { TrackId: line.Id, Name: line.Track, Length: line.Length})
Това трябва да доведе до следното съобщение за успех:
Следва заявка за преглед на новосъздадените възли:
MATCH (n:Track) RETURN n
Което трябва да доведе до новите възли, разпръснати около рамката за визуализация на данни.
Щракнете върху Редове икона, за да видите всеки възел и неговите три свойства:
Персонализиран разделител на полета
Можете да посочите персонализиран разделител на полета, ако е необходимо. Например, можете да посочите точка и запетая вместо запетая, ако така е форматиран CSV файлът.
За да направите това, просто добавете FIELDTERMINATOR
клауза към изявлението. Като това:
LOAD CSV WITH HEADERS FROM 'https://www.quackit.com/neo4j/tutorial/tracks.csv' AS line FIELDTERMINATOR ';' CREATE (:Track { TrackId: line.Id, Name: line.Track, Length: line.Length})
Импортиране на големи файлове
Ако ще импортирате файл с много данни, PERODIC COMMIT
клаузата може да бъде удобна.
Използване на PERIODIC COMMIT
инструктира Neo4j да запише данните след определен брой редове. Това намалява разхода на паметта за състоянието на транзакцията.
По подразбиране е 1000 реда, така че данните ще се записват на всеки хиляда реда.
За да използвате PERIODIC COMMIT
просто вмъкнете USING PERIODIC COMMIT
в началото на израза (преди LOAD CSV
)
Ето един пример:
USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM 'https://www.quackit.com/neo4j/tutorial/tracks.csv' AS line CREATE (:Track { TrackId: line.Id, Name: line.Track, Length: line.Length})
Задаване на процента на периодичните ангажименти
Можете също да промените скоростта от 1000 реда по подразбиране на друго число. Просто добавете номера след USING PERIODIC COMMIT
:
Като това:
USING PERIODIC COMMIT 800 LOAD CSV WITH HEADERS FROM 'https://www.quackit.com/neo4j/tutorial/tracks.csv' AS line CREATE (:Track { TrackId: line.Id, Name: line.Track, Length: line.Length})
CSV формат/Изисквания
Ето малко информация за това как CSV файлът трябва да бъде форматиран, когато се използва LOAD CSV
:
- Кодирането на знаците трябва да е UTF-8.
- Крайната линия зависи от системата, например
\n
на Unix или\r\n
на Windows. - Терминаторът трябва да е запетая
,
освен ако не е посочено друго с помощта наFIELDTERMINATOR
опция. - Символът за кавичката на низа е двойната кавичка
"
(те се премахват, когато данните се прочетат). - Всички знаци, които трябва да бъдат екранирани, могат да бъдат екранирани с обратна наклонена черта
\
характер. LOAD CSV
поддържа ресурси, компресирани с gzip, Deflate, както и ZIP архиви.