Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Neo4j - Importar dados de um arquivo CSV usando Cypher


Você pode importar dados de um arquivo CSV (Comma Separated Values) para um banco de dados Neo4j. Para fazer isso, use o LOAD CSV cláusula.

A capacidade de carregar arquivos CSV no Neo4j facilita a importação de dados de outro modelo de banco de dados (por exemplo, um banco de dados relacional).

Com o Neo4j, você pode carregar arquivos CSV de uma URL local ou remota.

Para acessar um arquivo armazenado localmente (no servidor de banco de dados), use um file:/// URL. Caso contrário, você pode importar arquivos remotos usando qualquer um dos protocolos HTTPS, HTTP e FTP.

Carregar um arquivo CSV


Vamos carregar um arquivo CSV chamado genres.csv usando o protocolo HTTP. Não é um arquivo grande — contém uma lista de 115 gêneros musicais, então criará 115 nós (e 230 propriedades).

Este arquivo está armazenado no Quackit.com, então você pode executar este código a partir do seu navegador Neo4j e ele deve ser importado diretamente para o seu banco de dados (supondo que você esteja conectado à Internet).

Você também pode baixar o arquivo aqui:gêneros.csv
LOAD CSV FROM 'https://www.quackit.com/neo4j/tutorial/genres.csv' AS line
CREATE (:Genre { GenreId: line[0], Name: line[1]})

Você pode deixar de fora determinados campos do arquivo CSV, se necessário. Por exemplo, se você não quiser que o primeiro campo seja importado para o banco de dados, você pode simplesmente omitir GenreId: line[0], do código acima.

A execução da instrução acima deve produzir a seguinte mensagem de sucesso:

Você pode acompanhar isso com uma consulta para ver os nós recém-criados:
MATCH (n:Genre) RETURN n

O que deve resultar nos nós espalhados pelo quadro de visualização de dados:

Importar um arquivo CSV contendo cabeçalhos


O arquivo CSV anterior não continha nenhum cabeçalho. Se o arquivo CSV contiver cabeçalhos, você poderá usar WITH HEADERS .

O uso desse método também permite que você faça referência a cada campo pelo nome da coluna/cabeçalho.

Temos outro arquivo CSV, desta vez com cabeçalhos. Este arquivo contém uma lista de faixas do álbum.

Novamente, este não é um arquivo grande - ele contém uma lista de 32 faixas, portanto, criará 32 nós (e 96 propriedades).

Este arquivo também está armazenado no Quackit.com, então você pode executar este código do seu navegador Neo4j e ele deve ser importado diretamente para o seu banco de dados (supondo que você esteja conectado à Internet).

Você também pode baixar o arquivo aqui: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})

Isso deve produzir a seguinte mensagem de sucesso:

Seguido com uma consulta para visualizar os nós recém-criados:
MATCH (n:Track) RETURN n

O que deve resultar nos novos nós espalhados pelo quadro de visualização de dados.

Clique nas Linhas ícone para ver cada nó e suas três propriedades:

Delimitador de campo personalizado


Você pode especificar um delimitador de campo personalizado, se necessário. Por exemplo, você pode especificar um ponto e vírgula em vez de uma vírgula se for assim que o arquivo CSV for formatado.

Para fazer isso, basta adicionar o FIELDTERMINATOR cláusula ao enunciado. Assim:
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})

Importando arquivos grandes


Se você for importar um arquivo com muitos dados, o PERODIC COMMIT cláusula pode ser útil.

Usando PERIODIC COMMIT instrui o Neo4j a confirmar os dados após um certo número de linhas. Isso reduz a sobrecarga de memória do estado da transação.

O padrão é 1.000 linhas, portanto, os dados serão confirmados a cada mil linhas.

Para usar PERIODIC COMMIT basta inserir USING PERIODIC COMMIT no início da instrução (antes de LOAD CSV )

Aqui está um exemplo:
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})

Definindo a taxa de commits periódicos


Você também pode alterar a taxa do padrão de 1.000 linhas para outro número. Basta adicionar o número após USING PERIODIC COMMIT :

Assim:
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})

Formato/Requisitos CSV


Aqui estão algumas informações sobre como o arquivo CSV deve ser formatado ao usar LOAD CSV :
  • A codificação de caracteres deve ser UTF-8.
  • A terminação da linha final depende do sistema, por exemplo, \n em Unix ou \r\n no Windows.
  • O terminador deve ser uma vírgula , a menos que especificado de outra forma usando o FIELDTERMINATOR opção.
  • O caractere para citação de string é as aspas duplas " (estes são removidos quando os dados são lidos).
  • Qualquer caractere que precise ser escapado pode ser escapado com a barra invertida \ personagem.
  • LOAD CSV suporta recursos compactados com gzip, Deflate, bem como arquivos ZIP.