Skip to content

Instantly share code, notes, and snippets.

@jvilledieu
Created March 14, 2017 17:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jvilledieu/313a6b56abd41db7d99c9f37db346d0c to your computer and use it in GitHub Desktop.
Save jvilledieu/313a6b56abd41db7d99c9f37db346d0c to your computer and use it in GitHub Desktop.
Import script for the generals' of gold.
// Verifying the CSV file
// assert correct line count
LOAD CSV FROM "file:/Developer/TGOG/data/person.csv" AS line
RETURN count(*);
// check first few raw lines
LOAD CSV FROM "file:/Developer/TGOG/data/person.csv" AS line WITH line
RETURN line
LIMIT 1;
// check first 5 line-sample with header-mapping
LOAD CSV WITH HEADERS FROM "file:/Developer/TGOG/data/person.csv" AS line WITH line
RETURN line
LIMIT 1;
//-=-=-=-=-=-=-=
//Cleaning up the database
MATCH (n)
WITH n LIMIT 10000
OPTIONAL MATCH (n)-[r]->()
DELETE n,r;
//Importing the file person.csv
//Creating the constraints
create constraint on (a:شخص) assert a.الاسم_الكامل is unique;
//Loading the data
USING PERIODIC COMMIT 2000
LOAD CSV WITH HEADERS FROM "file:/Developer/TGOG/data/person.csv" AS line WITH line
WHERE line.الاسم_الكامل IS NOT NULL
MERGE (a:شخص { الاسم_الكامل: line.الاسم_الكامل })
ON CREATE SET a.الاسم_الأول = line.الاسم_الأول,
a.اسم_الأب = line.اسم_الأب,
a.اسم_الجد = line.اسم_الجد,
a.اسم_العائلة = line.اسم_العائلة,
a.تاريخ_الميلاد = line.تاريخ_الميلاد,//toInt(line.تاريخ_الميلاد)
a.تاريخ_الوفاة = line.تاريخ_الوفاة,
a.الجنس = line.الجنس,
a.الجنسية = line.الجنسية,
a.الرتبة_العسكرية = line.الرتبة_العسكرية,
a.وصف_الشخصية = line.وصف_الشخصية,
a.رقم_القطاع = toInt(line.رقم_القطاع);
//Importing the file organization.csv
//Creating the constraints
create constraint on (a:منظمة) assert a.اسم_المنظمة is unique;
//Loading the data
USING PERIODIC COMMIT 2000
LOAD CSV WITH HEADERS FROM "file:/Developer/TGOG/data/organization.csv" AS line WITH line
WHERE line.اسم_المنظمة IS NOT NULL
MERGE (a:منظمة { اسم_المنظمة: line.اسم_المنظمة })
ON CREATE SET a.شهرة_المنظمة = line.شهرة_المنظمة,
a.بلد_المنشأ = line.بلد_المنشأ,
a.نوع_المنظمة = line.نوع_المنظمة,
a.نوع_السيطرة = line.نوع_السيطرة,
a.تاريخ_التأسيس = line.تاريخ_التأسيس,
a.تاريخ_الحل = line.تاريخ_الحل,
a.رقم_القطاع = toInt(line.رقم_القطاع);
// a.خط_الطول = toFloat(line.خط_الطول),
// a.دائرة_العرض = toFloat(line.دائرة_العرض);
//Importing the file project.csv
//Creating the constraints
create constraint on (a:مشروع) assert a.اسم_المشروع is unique;
//Loading the data
USING PERIODIC COMMIT 2000
LOAD CSV WITH HEADERS FROM "file:/Developer/TGOG/data/project.csv" AS line WITH line
WHERE line.اسم_المشروع IS NOT NULL
MERGE (a:مشروع { اسم_المشروع: line.اسم_المشروع })
ON CREATE SET a.وصف_المشروع = line.وصف_المشروع,
a.رقم_القطاع = toInt(line.رقم_القطاع),
a.قطاع_الخدمة = line.قطاع_الخدمة,
a.بداية_المشروع = line.بداية_المشروع,
a.نهاية_المشروع = line.نهاية_المشروع,
a.خط_الطول = toFloat(line.خط_الطول),
a.دائرة_العرض = toFloat(line.دائرة_العرض);
// Check label counts:
MATCH n
RETURN DISTINCT count(labels(n)), labels(n);
//Creating the edges
//Creating an index on the person to speed up the import
DROP CONSTRAINT ON (a:شخص) ASSERT a.الاسم_الكامل IS UNIQUE;
CREATE INDEX ON :شخص(الاسم_الكامل);
//Importing the file person_to_person_org.csv
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "file:/Developer/TGOG/data/person_to_person_org.csv" AS line WITH line
WHERE line.الطرف_الأول IS NOT NULL AND line.الطرف_الثاني IS NOT NULL
MATCH (a:شخص {الاسم_الكامل: line.الطرف_الأول}), (b:شخص {الاسم_الكامل: line.الطرف_الثاني})
CREATE (b)-[:رابطة_تنظيمية {نوع_العلاقة : line.نوع_العلاقة, وزن_العلاقة: toInt(line.وزن_العلاقة), وصف_العلاقة: line.وصف_العلاقة}]->(a);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment