Oracle PL/SQL-এ JSON ডেটা হ্যান্ডলিংয়ের জন্য বেশ কিছু শক্তিশালী ফাংশন রয়েছে, যার মধ্যে JSON_TABLE এবং JSON_QUERY প্রধান দুটি। এই ফাংশনগুলির মাধ্যমে JSON ডেটা সংগ্রহ, বিশ্লেষণ এবং সংরক্ষণ করা অনেক সহজ হয়ে যায়। এগুলি JSON ডেটাকে relational format এ কনভার্ট করতে সাহায্য করে এবং JSON ডেটার উপর বিভিন্ন অপারেশন করতে সক্ষম করে।
১. JSON_TABLE Function
JSON_TABLE ফাংশনটি একটি JSON ডকুমেন্টকে টেবিল ফরম্যাটে কনভার্ট করতে ব্যবহৃত হয়। এটি JSON ডেটা থেকে relational টেবিল তৈরি করে, যেখানে প্রতিটি JSON অবজেক্ট এক বা একাধিক রো হিসেবে রূপান্তরিত হয়।
Syntax:
JSON_TABLE (
json_expression, -- JSON ডকুমেন্ট বা এক্সপ্রেশন
path COLUMNS (
column_name FOR path_expression PATH 'json_path'
) [,...]
)
- json_expression: JSON ডেটা বা এক্সপ্রেশন যা JSON ডেটা থেকে টেবিল তৈরি করতে ব্যবহৃত হবে।
- path_expression: JSON ডেটার মধ্যে যে path অনুসন্ধান করতে হবে, সেটি।
- column_name: যে কলামের জন্য JSON ডেটা ম্যাপ করতে হবে, সেই নাম।
উদাহরণ:
ধরা যাক আমাদের কাছে একটি JSON ডেটা আছে যেখানে কর্মচারীদের তথ্য রয়েছে:
[
{"emp_id": 1, "name": "John", "department": "Sales", "salary": 5000},
{"emp_id": 2, "name": "Jane", "department": "Marketing", "salary": 6000},
{"emp_id": 3, "name": "Sam", "department": "HR", "salary": 4500}
]
এবার এই JSON ডেটাকে JSON_TABLE ফাংশন ব্যবহার করে টেবিল ফরম্যাটে কনভার্ট করা যাক:
SELECT *
FROM JSON_TABLE (
'[{"emp_id": 1, "name": "John", "department": "Sales", "salary": 5000},
{"emp_id": 2, "name": "Jane", "department": "Marketing", "salary": 6000},
{"emp_id": 3, "name": "Sam", "department": "HR", "salary": 4500}]',
'$[*]' COLUMNS (
emp_id NUMBER PATH '$.emp_id',
name VARCHAR2(100) PATH '$.name',
department VARCHAR2(100) PATH '$.department',
salary NUMBER PATH '$.salary'
)
) JT;
এই কোডটি JSON ডেটাকে টেবিল ফরম্যাটে কনভার্ট করবে এবং আমরা নিচের ফলাফল পাবো:
| EMP_ID | NAME | DEPARTMENT | SALARY |
|---|---|---|---|
| 1 | John | Sales | 5000 |
| 2 | Jane | Marketing | 6000 |
| 3 | Sam | HR | 4500 |
২. JSON_QUERY Function
JSON_QUERY ফাংশনটি JSON ডেটার মধ্যে নির্দিষ্ট তথ্য বের করতে ব্যবহৃত হয়। এটি JSON ডেটার অংশবিশেষ নির্বাচন করতে সাহায্য করে। বিশেষ করে, এই ফাংশনটি JSON ডেটাকে পুরোপুরি বা আংশিকভাবে ফেরত দিতে পারে।
Syntax:
JSON_QUERY (
json_expression, -- JSON ডেটা বা এক্সপ্রেশন
path -- JSON Path যে অংশটি নির্বাচন করতে হবে
[RETURNING clause] -- Optional: RETURNING "RAW" or "TEXT"
)
- json_expression: JSON ডেটা বা এক্সপ্রেশন, যা থেকে তথ্য বের করতে হবে।
- path: JSON ডেটার যে অংশে অনুসন্ধান করতে হবে, সেটি।
Return Types:
- TEXT: JSON ডেটার অংশটি আক্ষরিকভাবে ফেরত দেয়।
- RAW: JSON ডেটার অংশটি কোনও কোডেড বা টেবিল ফরম্যাটে ফেরত দেয়।
উদাহরণ:
ধরা যাক আমাদের কাছে নিম্নলিখিত JSON ডেটা রয়েছে:
{
"employee": {
"id": 1,
"name": "John",
"department": "Sales",
"address": {
"street": "1234 Elm St",
"city": "Metropolis"
}
}
}
এখন, যদি আমরা employee অবজেক্টের পুরো ডেটা বের করতে চাই, তবে আমরা JSON_QUERY ব্যবহার করতে পারি:
SELECT JSON_QUERY(
'{"employee": {"id": 1, "name": "John", "department": "Sales", "address": {"street": "1234 Elm St", "city": "Metropolis"}}}',
'$.employee'
) AS employee_info
FROM dual;
এখানে, আমরা employee অবজেক্টের সম্পূর্ণ তথ্য ফেরত পাবো।
ফলাফল:
{
"id": 1,
"name": "John",
"department": "Sales",
"address": {
"street": "1234 Elm St",
"city": "Metropolis"
}
}
আরেকটি উদাহরণ:
ধরা যাক, আমরা শুধুমাত্র address তথ্য বের করতে চাই:
SELECT JSON_QUERY(
'{"employee": {"id": 1, "name": "John", "department": "Sales", "address": {"street": "1234 Elm St", "city": "Metropolis"}}}',
'$.employee.address'
) AS employee_address
FROM dual;
ফলাফল:
{
"street": "1234 Elm St",
"city": "Metropolis"
}
JSON_QUERY এবং JSON_TABLE এর পার্থক্য
- JSON_TABLE: JSON ডেটাকে relational টেবিল ফরম্যাটে কনভার্ট করে, যা SQL queries এর মাধ্যমে সহজেই অ্যাক্সেস করা যায়।
- JSON_QUERY: JSON ডেটার নির্দিষ্ট অংশ বের করতে ব্যবহৃত হয়, তবে এটি JSON অবজেক্টের আউটপুট হিসেবে ফেরত দেয়।
উপসংহার
- JSON_TABLE ফাংশনটি JSON ডেটাকে টেবিল ফরম্যাটে কনভার্ট করতে ব্যবহৃত হয় এবং এতে SQL queries চালানো অনেক সহজ হয়ে যায়।
- JSON_QUERY ফাংশনটি JSON ডেটার নির্দিষ্ট অংশ বের করতে সাহায্য করে এবং এটি JSON ডেটার একটি আউটপুট প্রদান করে।
এই ফাংশনগুলির মাধ্যমে PL/SQL-এ JSON ডেটার সাথে আরও কার্যকরীভাবে কাজ করা সম্ভব, যেমন JSON ডেটা থেকে নির্দিষ্ট তথ্য বের করা এবং তা relational টেবিল ফরম্যাটে কনভার্ট করা।
Read more