Anda dapat mengimpor data dari file CSV (Comma Separated Values) ke dalam database Neo4j. Untuk melakukannya, gunakan LOAD CSV
klausa.
Mampu memuat file CSV ke Neo4j memudahkan untuk mengimpor data dari model database lain (misalnya, database relasional).
Dengan Neo4j, Anda dapat memuat file CSV dari URL lokal atau jarak jauh.
Untuk mengakses file yang disimpan secara lokal (di server database), gunakan file:///
URL. Jika tidak, Anda dapat mengimpor file jarak jauh menggunakan salah satu protokol HTTPS, HTTP, dan FTP.
Muat File CSV
Mari kita memuat file CSV bernama genres.csv menggunakan protokol HTTP. Ini bukan file besar — berisi daftar 115 genre musik, sehingga akan membuat 115 node (dan 230 properti).
File ini disimpan di Quackit.com, sehingga Anda dapat menjalankan kode ini dari browser Neo4j Anda dan kode tersebut harus diimpor langsung ke database Anda (dengan asumsi Anda terhubung ke Internet).
Anda juga dapat mengunduh file di sini:genres.csv
LOAD CSV FROM 'https://www.quackit.com/neo4j/tutorial/genres.csv' AS line CREATE (:Genre { GenreId: line[0], Name: line[1]})
Anda dapat mengabaikan bidang tertentu dari file CSV jika diperlukan. Misalnya, jika Anda tidak ingin bidang pertama diimpor ke database, Anda cukup menghilangkan GenreId: line[0],
dari kode di atas.
Menjalankan pernyataan di atas akan menghasilkan pesan sukses berikut:
Anda dapat menindaklanjutinya dengan kueri untuk melihat node yang baru dibuat:
MATCH (n:Genre) RETURN n
Yang seharusnya menghasilkan node yang tersebar di sekitar bingkai visualisasi data:
Impor file CSV yang berisi Header
File CSV sebelumnya tidak berisi header apa pun. Jika file CSV berisi header, Anda dapat menggunakan WITH HEADERS
.
Menggunakan metode ini juga memungkinkan Anda untuk mereferensikan setiap bidang dengan nama kolom/tajuknya.
Kami memiliki file CSV lain, kali ini dengan header. File ini berisi daftar trek album.
Sekali lagi, ini bukan file besar — berisi daftar 32 trek, sehingga akan membuat 32 node (dan 96 properti).
File ini juga disimpan di Quackit.com, sehingga Anda dapat menjalankan kode ini dari browser Neo4j Anda dan kode tersebut harus diimpor langsung ke database Anda (dengan asumsi Anda terhubung ke Internet).
Anda juga dapat mengunduh file di sini:track.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})
Ini akan menghasilkan pesan sukses berikut:
Ditindaklanjuti dengan kueri untuk melihat node yang baru dibuat:
MATCH (n:Track) RETURN n
Yang seharusnya menghasilkan node baru yang tersebar di sekitar bingkai visualisasi data.
Klik pada Baris ikon untuk melihat setiap simpul dan tiga propertinya:
Pembatas Bidang Khusus
Anda dapat menentukan pembatas bidang khusus jika diperlukan. Misalnya, Anda dapat menentukan titik koma alih-alih koma jika itu adalah cara file CSV diformat.
Untuk melakukannya, cukup tambahkan FIELDTERMINATOR
klausa ke pernyataan. Seperti ini:
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})
Mengimpor File Besar
Jika Anda akan mengimpor file dengan banyak data, PERODIC COMMIT
klausa bisa berguna.
Menggunakan PERIODIC COMMIT
menginstruksikan Neo4j untuk mengkomit data setelah sejumlah baris tertentu. Ini mengurangi overhead memori dari status transaksi.
Defaultnya adalah 1000 baris, jadi data akan dikomit setiap seribu baris.
Untuk menggunakan PERIODIC COMMIT
cukup masukkan USING PERIODIC COMMIT
di awal pernyataan (sebelum LOAD CSV
)
Ini contohnya:
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})
Menyetel Tingkat Komitmen Berkala
Anda juga dapat mengubah tarif dari default 1000 baris ke nomor lain. Cukup tambahkan nomor setelah USING PERIODIC COMMIT
:
Seperti ini:
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})
Format/Persyaratan CSV
Berikut beberapa informasi tentang bagaimana file CSV harus diformat saat menggunakan LOAD CSV
:
- Pengkodean karakter harus UTF-8.
- Penghentian baris akhir bergantung pada sistem, misalnya,
\n
di Unix atau\r\n
di Windows. - Terminator harus berupa koma
,
kecuali ditentukan lain menggunakanFIELDTERMINATOR
pilihan. - Karakter untuk kutipan string adalah tanda kutip ganda
"
(ini dihapus saat data dibaca). - Setiap karakter yang perlu diloloskan dapat diloloskan dengan garis miring terbalik
\
karakter. LOAD CSV
mendukung sumber daya yang dikompresi dengan gzip, Deflate, serta arsip ZIP.