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 oFIELDTERMINATOR
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.