Neo4j-এ ডেটা CSV ফাইল থেকে ইমপোর্ট করার জন্য LOAD CSV কমান্ড ব্যবহার করা হয়। এই কমান্ডটি CSV ফাইল থেকে ডেটা লোড করে এবং সেই ডেটার উপর বিভিন্ন গ্রাফ অপারেশন সম্পাদন করতে সাহায্য করে।
Neo4j-এ CSV ফাইল থেকে ডেটা ইমপোর্ট করা একটি সাধারণ প্রক্রিয়া, যা Cypher Query Language ব্যবহার করে করা হয়। এখানে CSV ফাইলের প্রতিটি রেকর্ডকে Node বা Relationship হিসেবে পরিণত করা হয়।
LOAD CSV সিনট্যাক্স
LOAD CSV WITH HEADERS FROM 'file:///path/to/your/file.csv' AS row
এখানে:
LOAD CSV: CSV ফাইল থেকে ডেটা লোড করতে ব্যবহৃত কমান্ড।WITH HEADERS: যদি আপনার CSV ফাইলের প্রথম লাইনটিতে হেডার থাকে, তবে এটি ডেটাকে হেডারের মাধ্যমে মাপার জন্য ব্যবহার করা হয়।'file:///path/to/your/file.csv': আপনার CSV ফাইলের সঠিক লোকেশন। এটিfile://স্কিমা দিয়ে শুরু হয়।AS row: CSV ফাইলের প্রতিটি রেকর্ডকে একটি row নামে সংজ্ঞায়িত করা হয়েছে, যাতে পরবর্তী কোয়েরিতে প্রতিটি কলাম অ্যাক্সেস করা যাবে।
1. Basic CSV Import (Node Creation)
উদাহরণ:
ধরা যাক, আপনার কাছে একটি CSV ফাইল রয়েছে যেখানে person.csv ফাইলটি এই ধরনের ডেটা ধারণ করে:
name,age,city
Alice,30,Dhaka
Bob,25,Chattogram
Charlie,35,Sylhet
এটি Person নামে একটি নোড তৈরি করবে, যেখানে প্রতিটি ব্যক্তির নাম, বয়স, এবং শহরের প্রপার্টি থাকবে।
Cypher Query:
LOAD CSV WITH HEADERS FROM 'file:///person.csv' AS row
CREATE (p:Person {name: row.name, age: toInteger(row.age), city: row.city});
এখানে:
LOAD CSV WITH HEADERSকমান্ডটিperson.csvফাইল থেকে ডেটা লোড করবে।CREATE (p:Person {...}): প্রতিটি রেকর্ডের জন্য একটিPersonনোড তৈরি করবে, যেখানেname,age, এবংcityপ্রপার্টি থাকবে।toInteger(row.age): বয়সটি একটি পূর্ণসংখ্যা হিসেবে কনভার্ট করার জন্যtoInteger()ফাংশন ব্যবহার করা হচ্ছে।
2. Importing Data with Relationships
ধরা যাক, আপনার কাছে দুটি CSV ফাইল রয়েছে, একটি person.csv এবং একটি relationship.csv।
person.csv:
name,age,city
Alice,30,Dhaka
Bob,25,Chattogram
Charlie,35,Sylhet
relationship.csv:
person1,person2,relationship
Alice,Bob,FRIENDS_WITH
Bob,Charlie,FRIENDS_WITH
এখন, আপনি দুটি CSV ফাইল ব্যবহার করে নোড এবং রিলেশনশিপ তৈরি করতে পারবেন। person1 এবং person2 কলাম থেকে Person নোডের মধ্যে FRIENDS_WITH সম্পর্ক তৈরি করা হবে।
Cypher Query:
// Create Person Nodes
LOAD CSV WITH HEADERS FROM 'file:///person.csv' AS row
CREATE (p:Person {name: row.name, age: toInteger(row.age), city: row.city});
// Create Relationships
LOAD CSV WITH HEADERS FROM 'file:///relationship.csv' AS row
MATCH (a:Person {name: row.person1}), (b:Person {name: row.person2})
CREATE (a)-[:FRIENDS_WITH]->(b);
এখানে:
- প্রথম কোয়েরি
person.csvফাইল থেকে Person নোড তৈরি করবে। - দ্বিতীয় কোয়েরি
relationship.csvফাইল থেকে Person নোডের মধ্যেFRIENDS_WITHসম্পর্ক তৈরি করবে।
3. Filtering and Transformation during Import
আপনি যখন CSV ফাইল থেকে ডেটা লোড করেন, তখন ডেটা ফিল্টার বা রূপান্তর (transformation) করার জন্য কিছু শর্তও প্রয়োগ করতে পারেন।
উদাহরণ:
ধরা যাক, আপনার কাছে একটি product.csv ফাইল আছে এবং আপনি শুধুমাত্র price ৫০ এর বেশি পণ্যের তথ্য লোড করতে চান।
product.csv:
name,category,price
Laptop,Electronics,60000
Phone,Electronics,20000
Shirt,Fashion,1500
Cypher Query:
LOAD CSV WITH HEADERS FROM 'file:///product.csv' AS row
WITH row WHERE toInteger(row.price) > 5000
CREATE (p:Product {name: row.name, category: row.category, price: toInteger(row.price)});
এখানে:
WITH row WHERE toInteger(row.price) > 5000:price৫,০০০ এর বেশি এমন পণ্যগুলো ফিল্টার করা হচ্ছে।CREATE (p:Product {...}): শুধুমাত্র নির্বাচিত পণ্যগুলো Product নোডে তৈরি হচ্ছে।
4. Handling Large CSV Files
যদি আপনার CSV ফাইলটি খুব বড় হয়, তবে আপনি এটি ছোট ছোট অংশে ভাগ করে লোড করতে পারেন। LOAD CSV কমান্ডটি সব ডেটা একবারে লোড করার চেষ্টা করে, তবে বড় ডেটা ফাইল হলে এটি পারফরম্যান্স ইস্যু তৈরি করতে পারে।
ব্যবহারিক পদ্ধতি:
LIMIT ব্যবহার করে ডেটাকে ছোট অংশে ভাগ করে লোড করুন:
LOAD CSV WITH HEADERS FROM 'file:///yourfile.csv' AS row WITH row LIMIT 1000 CREATE (n:Node {name: row.name});- Skip and Limit ব্যবহার করে পৃষ্ঠায় পৃষ্ঠায় ডেটা লোড করুন।
সংক্ষেপ
Neo4j-এ LOAD CSV কমান্ড ব্যবহার করে CSV ফাইল থেকে ডেটা ইমপোর্ট করা খুব সহজ। আপনি Node, Relationship, এবং Properties তৈরি করতে Cypher Query Language ব্যবহার করতে পারেন। এছাড়া, আপনি Transformation, Filtering, এবং Batch Importing ফিচারগুলোও ব্যবহার করতে পারেন বড় ডেটাসেটগুলো সহজে ও কার্যকরভাবে লোড করতে।
Read more