Как я могу загрузить CSV-файл в neo4j, если я хочу, чтобы значение ключа было в формате списка вместо строки? - PullRequest
0 голосов
/ 10 апреля 2020

Если я хочу импортировать artist.csv со следующими данными в базу данных Neo4j. Как я могу загрузить альбом (последний индекс). Я мог бы загрузить в neo4j только если последний индекс был внутри кавычек "".

1,ABBA,['WATER LOO', 'ARRIVAL']
2,BEATLES, [LET IT BE]

Я пытался

LOAD CSV FROM 'file:///artist.csv' AS line
 CREATE (:Artist { name: line[1], album: line[2]})

Результат, который я искал, равен

{
  "name": "ABBA",
  "album": ["WATER LOO, ARRIVAL"]
}
{
  "name": "BEATLES",
  "album": [" LET IT BE"]
}

Результат, который я получаю:

{
  "name": "ABBA",
  "album": "['WATER LOO', 'ARRIVAL']"
}
{
  "name": "BEATLES",
  "album": " LET IT BE"
}

Если бы у меня был CSV с альбомами в другой колонке, могу ли я объединить их при загрузке в neo4j?

id,artist,album_1, album_2
1,ABBA,WATER LOO, ARRIVAL
2,BEATLES, LET IT BE,

1 Ответ

0 голосов
/ 10 апреля 2020

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

Вот одно из решений:

  1. Измените файл данных на этот формат:

    1,ABBA,WATER LOO;ARRIVAL
    2,BEATLES,LET IT BE
    
  2. Используйте этот запрос:

    LOAD CSV FROM 'file:///artist.csv' AS line
    CREATE (a:Artist {name: line[1], albums: SPLIT(line[2], ';')})
    RETURN a
    

    Результат будет:

    ╒════════════════════════════════════════════════╕
    │"a"                                             │
    ╞════════════════════════════════════════════════╡
    │{"name":"ABBA","albums":["WATER LOO","ARRIVAL"]}│
    ├────────────────────────────────────────────────┤
    │{"name":"BEATLES","albums":["LET IT BE"]}       │
    └────────────────────────────────────────────────┘
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...