neo4jを使用して知識グラフを作成する場合、そのようなシナリオが発生することがあります。大量のデータから読み取り、同じタイプのノードを多数生成します。
py2neoの使用はそれほど簡単ではないようです。
そこで、このような考え方が採用されました。
取得したデータは前処理してCSVファイルを生成し、neo4jに付属のCypherのLOADCSVステートメントを使用してバッチを作成します。
ここでは、最初にCSVファイル(カンマ区切り値)のカンマ区切り値ファイルを作成します。
このファイルは、改行を使用して2行のデータを区切ります。2つの列をコンマで区切ります。
csvの最初の行は列名です。
ここでデモンストレーションしましょう:
Id,Name,Location,Email,BusinessType
1,Neo4j,San Mateo,contact@neo4j.com,P
2,AAA,,info@aaa.com,
3,BBB,Chicago,,G
次に、公式マニュアルの要件であるneo4jインストールディレクトリの下のインポートフォルダに配置します。
ここでは
、neo4jの7474ポートのWeb制御端末に準拠して開き、次のステートメントを実行します。
LOAD CSV WITH HEADERS FROM 'file:///test.csv' AS row
WITH row WHERE row.Id IS NOT NULL
MERGE (c:Company{
companyid:row.Id,location:coalesce(row.Location,"Unknown"),email:coalesce(row.Email,"Unknow")});
最初の行はcsvファイルをロードすることを意味し、そのデフォルトのファイルパスは上記のインポートフォルダーです
。2番目の行はwhere条件ステートメント(ここではsqlと同様)であり、IDを除外します。
最後の行はマージです。ステートメント:
- マージステートメントについて:MERGEコマンドは、グラフ内の特定のパターンを検索します。
- 存在する場合は、結果を返します
- グラフに存在しない場合は、新しいノード/関係を作成し、結果を返します
ここで、行は変数であり、その属性は大文字と大文字にする必要があることに注意する必要があります。間違って記述されていると、追加できません。
次に、ここでのcoalesce(a、b)は、ハッシュマップのgetOrdefault(a、b)と同じ意味です。aがnullの場合、bを返します。これは、属性にデフォルト値を与えることと同じです。このように記述することをお勧めします。
実行後、ノードはバッチで生成できます。
LOAD CSVメソッドは、10M未満のデータに適しています。他の方法を使用する必要があります。
効果を生み出す: