JSON ডেটা হ্যান্ডলিং এবং JSON_VALUE, JSON_QUERY

XML এবং JSON ডেটা ম্যানিপুলেশন - টি-এসকিউএল (T-SQL) - Database Tutorials

234

SQL Server 2016 এবং তার পরবর্তী সংস্করণে JSON (JavaScript Object Notation) ডেটা স্টোরেজ এবং প্রক্রিয়া করার জন্য বিল্ট-ইন ফিচার প্রদান করা হয়েছে। JSON একটি লাইটওয়েট, টেক্সট-ভিত্তিক ডেটা ফরম্যাট যা হিউম্যান-রিডেবল এবং ইজি টু পার্সেবল। SQL Server JSON ডেটাকে স্টোর করতে এবং প্রসেস করতে JSON_VALUE, JSON_QUERY, OPENJSON এবং আরও কিছু ফাংশন প্রদান করে।

JSON ডেটা হ্যান্ডলিং

SQL Server এ JSON ডেটা সাধারণত VARCHAR, NVARCHAR, অথবা TEXT ডেটাটাইপে স্টোর করা হয়। SQL Server JSON ডেটাকে নির্দিষ্ট ফাংশন ব্যবহার করে পার্স (parse) এবং প্রসেস (process) করতে পারে। JSON ডেটা টেবিলের কলামে স্টোর করা যেতে পারে এবং পরবর্তীতে প্রয়োজন অনুযায়ী তার উপর অ্যাক্সেস বা কুয়েরি পরিচালনা করা যায়।


JSON_VALUE ফাংশন

JSON_VALUE ফাংশনটি JSON ডেটার মধ্যে থেকে একটি নির্দিষ্ট স্কেলার (যেমন, স্ট্রিং, সংখ্যা) ভ্যালু রিটার্ন করে। এটি JSON ডেটার মধ্যে নির্দিষ্ট একটি প্রপার্টি (key) এর মান বের করার জন্য ব্যবহৃত হয়।

সিনট্যাক্স:

JSON_VALUE (expression, path)
  • expression: JSON ডেটার সোর্স (এটি একটি VARCHAR, NVARCHAR, বা TEXT টাইপ হতে হবে)।
  • path: JSON ডেটার মধ্যে যেই প্রপার্টি বা কুয়েরি করতে চান, তার পাথ। পাথ $.propertyName ফরম্যাটে দেওয়া হয়।

উদাহরণ:

ধরা যাক, আমাদের একটি টেবিল Orders আছে এবং সেখানে OrderDetails নামে একটি কলাম রয়েছে যা JSON ডেটা ধারণ করে:

{
  "OrderID": 123,
  "CustomerName": "John Doe",
  "Items": [
    { "ItemName": "Laptop", "Quantity": 1, "Price": 1000 },
    { "ItemName": "Mouse", "Quantity": 2, "Price": 20 }
  ]
}
-- JSON_VALUE ব্যবহার করে "CustomerName" বের করা
SELECT JSON_VALUE(OrderDetails, '$.CustomerName') AS CustomerName
FROM Orders;

এখানে, $.CustomerName JSON ডেটার মধ্যে CustomerName প্রপার্টি থেকে মান বের করার জন্য ব্যবহার করা হয়েছে। এই কোডটি John Doe রিটার্ন করবে।

আরেকটি উদাহরণ:

-- JSON_VALUE ব্যবহার করে "Price" এর মান বের করা
SELECT JSON_VALUE(OrderDetails, '$.Items[0].Price') AS ItemPrice
FROM Orders;

এখানে, $.Items[0].Price পাথ দিয়ে প্রথম আইটেমের Price প্রপার্টি থেকে মান রিটার্ন হবে (যেমন: 1000)।


JSON_QUERY ফাংশন

JSON_QUERY ফাংশনটি JSON ডেটা থেকে এক বা একাধিক ভ্যালু (যেমন একটি সম্পূর্ণ অবজেক্ট বা অ্যারে) রিটার্ন করে। এটি JSON ডেটার স্ট্রিং হিসেবে ফিরিয়ে দেয় যা নিজেই একটি JSON অবজেক্ট বা অ্যারে হতে পারে।

সিনট্যাক্স:

JSON_QUERY (expression, path)
  • expression: JSON ডেটার সোর্স (এটি একটি VARCHAR, NVARCHAR, বা TEXT টাইপ হতে হবে)।
  • path: JSON ডেটার মধ্যে যেই অবজেক্ট বা অ্যারে প্রাপ্য তা সিলেক্ট করতে ব্যবহৃত পাথ।

উদাহরণ:

-- JSON_QUERY ব্যবহার করে "Items" অ্যারে বের করা
SELECT JSON_QUERY(OrderDetails, '$.Items') AS Items
FROM Orders;

এখানে, $.Items পাথ দিয়ে পুরো Items অ্যারে রিটার্ন করা হবে, যা দেখতে কিছুটা এইরকম হবে:

[
  { "ItemName": "Laptop", "Quantity": 1, "Price": 1000 },
  { "ItemName": "Mouse", "Quantity": 2, "Price": 20 }
]

আরেকটি উদাহরণ:

-- JSON_QUERY ব্যবহার করে "Items" অ্যারে থেকে প্রথম আইটেমের JSON অবজেক্ট বের করা
SELECT JSON_QUERY(OrderDetails, '$.Items[0]') AS FirstItem
FROM Orders;

এখানে, $.Items[0] পাথ দিয়ে প্রথম আইটেমের JSON অবজেক্ট রিটার্ন হবে, যা কিছুটা এইরকম হবে:

{ "ItemName": "Laptop", "Quantity": 1, "Price": 1000 }

OPENJSON ফাংশন

OPENJSON একটি বিশেষ ফাংশন যা JSON ডেটাকে রিলেশনাল (সারি এবং কলাম) ফর্ম্যাটে কনভার্ট করে। এটি JSON অ্যারে বা অবজেক্টের ভিতরে থাকা প্রতিটি আইটেমকে আলাদা রেকর্ডে রূপান্তর করে।

সিনট্যাক্স:

OPENJSON (expression)
WITH (column_name datatype, ...)
  • expression: JSON ডেটার সোর্স।
  • WITH: একাধিক কলাম বের করার জন্য ব্যবহৃত হয়।

উদাহরণ:

ধরা যাক, আপনার কাছে একটি JSON অ্যারে রয়েছে:

[
  { "ItemName": "Laptop", "Quantity": 1, "Price": 1000 },
  { "ItemName": "Mouse", "Quantity": 2, "Price": 20 }
]
-- OPENJSON ব্যবহার করে JSON অ্যারে থেকে ডেটা বের করা
SELECT ItemName, Quantity, Price
FROM OPENJSON('[{"ItemName": "Laptop", "Quantity": 1, "Price": 1000}, {"ItemName": "Mouse", "Quantity": 2, "Price": 20}]')
WITH (
  ItemName NVARCHAR(100),
  Quantity INT,
  Price DECIMAL(10, 2)
);

এটি একটি রিলেশনাল রেজাল্ট রিটার্ন করবে:

ItemNameQuantityPrice
Laptop11000
Mouse220

JSON ডেটা হ্যান্ডলিং এবং পারফরম্যান্স

  1. Indexes: JSON ডেটাকে ইন্ডেক্স করা যেতে পারে যদি আপনি খুব বেশি JSON ডেটার উপর কাজ করেন। তবে, এটি অন্য টেবিলের সাধারণ ইনডেক্সের তুলনায় কিছুটা কম কার্যকর হতে পারে।
  2. Performance Considerations: JSON ডেটার উপর কাজ করার সময় অতিরিক্ত প্রসেসিংয়ের প্রয়োজন হয়, তাই খুব বেশি JSON ডেটা ব্যবহার করলে পারফরম্যান্সের উপর প্রভাব পড়তে পারে।
  3. Storing JSON: SQL Server JSON ডেটাকে NVARCHAR বা VARCHAR কলামে সংরক্ষণ করে, তবে এটি পুরোপুরি রিলেশনাল ডেটাবেস থেকে ভিন্ন ধরনের স্টোরেজ।

সারাংশ

  • JSON_VALUE একটি JSON ডেটা থেকে একক স্কেলার ভ্যালু (যেমন, স্ট্রিং বা সংখ্যা) রিটার্ন করে।
  • JSON_QUERY JSON ডেটা থেকে একটি JSON অবজেক্ট বা অ্যারে রিটার্ন করে।
  • OPENJSON JSON ডেটাকে রিলেশনাল টেবিল ফরম্যাটে কনভার্ট করে, যা JSON অ্যারে বা অবজেক্টের ভিতরে থাকা ডেটাকে সারি এবং কলাম আকারে রিটার্ন করে।
  • SQL Server JSON ডেটা প্রক্রিয়াকরণের জন্য শক্তিশালী ফাংশন প্রদান করে, যা ডেটাবেসের মধ্যে JSON ডেটাকে স্টোর ও প্রসেস করতে সাহায্য করে।
Content added By
Promotion

Are you sure to start over?

Loading...