Skill

XML এবং JSON ডেটা ম্যানিপুলেশন

টি-এসকিউএল (T-SQL) - Database Tutorials

295

XML (Extensible Markup Language) এবং JSON (JavaScript Object Notation) হল দুটি জনপ্রিয় ডেটা ফরম্যাট যা ডেটা সংরক্ষণ, আদান-প্রদান এবং ম্যানিপুলেশন করার জন্য ব্যাপকভাবে ব্যবহৃত হয়। SQL Server-এ XML এবং JSON ডেটা ম্যানিপুলেশন করা যায় যাতে আপনি ডেটাবেসের মধ্যে স্টোর করা XML বা JSON ডেটাকে সহজে অনুসন্ধান, সংশোধন এবং এক্সট্র্যাক্ট করতে পারেন।

নিচে SQL Server-এ XML এবং JSON ডেটা ম্যানিপুলেশনের বিভিন্ন পদ্ধতি এবং উদাহরণ দেওয়া হলো।


১. XML ডেটা ম্যানিপুলেশন

SQL Server-এ XML ডেটা ম্যানিপুলেশনের জন্য XML Data Type ব্যবহৃত হয়, যা একটি সেলুলার ডেটা টাইপ হিসেবে কাজ করে এবং XML ডেটার উপর বিভিন্ন অপারেশন করতে সাহায্য করে।

XML ডেটা তৈরি এবং ইনসার্ট করা:

ধরা যাক, আপনার একটি Products টেবিল রয়েছে এবং আপনি সেখানে একটি XML ডেটা সন্নিবেশ করতে চান:

DECLARE @xmlData XML;

SET @xmlData = '<Product>
                   <ProductID>101</ProductID>
                   <ProductName>Product A</ProductName>
                   <Price>200.00</Price>
                 </Product>';

INSERT INTO Products (ProductData)
VALUES (@xmlData);

এখানে, XML ডেটা Products টেবিলে ProductData কলামে ইনসার্ট করা হয়েছে।

XML ডেটা থেকে তথ্য বের করা (Querying XML Data):

SQL Server-এ XML ডেটা থেকে তথ্য বের করার জন্য nodes() এবং value() মেথড ব্যবহার করা হয়।

DECLARE @xmlData XML;
SET @xmlData = '<Products>
                   <Product>
                       <ProductID>101</ProductID>
                       <ProductName>Product A</ProductName>
                       <Price>200.00</Price>
                   </Product>
                   <Product>
                       <ProductID>102</ProductID>
                       <ProductName>Product B</ProductName>
                       <Price>150.00</Price>
                   </Product>
                </Products>';

-- XML ডেটা থেকে ProductName বের করা
SELECT 
    Product.value('ProductName[1]', 'NVARCHAR(100)') AS ProductName
FROM 
    @xmlData.nodes('/Products/Product') AS T(Product);

এখানে, nodes() ফাংশনটি XML ডেটা থেকে Product এলিমেন্টগুলোর উপর ইটারেট করে এবং value() ফাংশনটি সেই ProductName আউটপুট হিসেবে রিটার্ন করে।

XML ডেটা আপডেট করা:

DECLARE @xmlData XML;
SET @xmlData = '<Product>
                   <ProductID>101</ProductID>
                   <ProductName>Product A</ProductName>
                   <Price>200.00</Price>
                 </Product>';

-- XML ডেটাতে Price আপডেট করা
SET @xmlData.modify('replace value of (/Product/Price/text())[1] with "250.00"');

SELECT @xmlData;

এখানে, modify() ফাংশনটি XML ডেটাতে Price এর মান পরিবর্তন করে 250.00 সেট করছে।


২. JSON ডেটা ম্যানিপুলেশন

SQL Server-এ JSON ডেটা ম্যানিপুলেশন করতে JSON Data Type ব্যবহার করা হয়। SQL Server 2016 এবং পরবর্তী সংস্করণে JSON সাপোর্ট যোগ করা হয়েছে, এবং আপনি JSON ডেটা স্টোর, অনুসন্ধান, এবং ম্যানিপুলেশন করতে পারেন।

JSON ডেটা তৈরি এবং ইনসার্ট করা:

ধরা যাক, আপনার একটি Employees টেবিল রয়েছে এবং আপনি সেখানে একটি JSON ডেটা সন্নিবেশ করতে চান:

DECLARE @jsonData NVARCHAR(MAX);

SET @jsonData = N'[
                    {"EmployeeID": 1, "Name": "John Doe", "Position": "Manager"},
                    {"EmployeeID": 2, "Name": "Jane Smith", "Position": "Developer"}
                 ]';

INSERT INTO Employees (EmployeeData)
VALUES (@jsonData);

এখানে, JSON ডেটা Employees টেবিলে EmployeeData কলামে ইনসার্ট করা হয়েছে।

JSON ডেটা থেকে তথ্য বের করা (Querying JSON Data):

SQL Server-এ JSON ডেটা থেকে তথ্য বের করার জন্য JSON_VALUE() এবং OPENJSON() ফাংশন ব্যবহৃত হয়।

DECLARE @jsonData NVARCHAR(MAX);
SET @jsonData = N'[
                    {"EmployeeID": 1, "Name": "John Doe", "Position": "Manager"},
                    {"EmployeeID": 2, "Name": "Jane Smith", "Position": "Developer"}
                 ]';

-- JSON ডেটা থেকে EmployeeName বের করা
SELECT JSON_VALUE(@jsonData, '$[0].Name') AS EmployeeName;

এখানে, JSON_VALUE() ফাংশনটি JSON ডেটা থেকে নির্দিষ্ট পথ (Path) অনুসারে Name বের করেছে।

JSON ডেটা থেকে টেবিল তৈরি করা (OPENJSON):

OPENJSON() ফাংশনটি JSON ডেটাকে টেবিল ফরম্যাটে রূপান্তর করতে ব্যবহৃত হয়:

DECLARE @jsonData NVARCHAR(MAX);
SET @jsonData = N'[
                    {"EmployeeID": 1, "Name": "John Doe", "Position": "Manager"},
                    {"EmployeeID": 2, "Name": "Jane Smith", "Position": "Developer"}
                 ]';

-- JSON ডেটাকে টেবিল ফরম্যাটে রূপান্তর করা
SELECT *
FROM OPENJSON(@jsonData)
WITH (
    EmployeeID INT,
    Name NVARCHAR(100),
    Position NVARCHAR(100)
);

এখানে, OPENJSON() JSON ডেটাকে টেবিল ফরম্যাটে রূপান্তর করেছে, যাতে আপনি SQL কুয়েরি করতে পারেন।

JSON ডেটা আপডেট করা:

SQL Server-এ JSON ডেটা আপডেট করার জন্য JSON_MODIFY() ফাংশন ব্যবহার করা হয়:

DECLARE @jsonData NVARCHAR(MAX);
SET @jsonData = N'[
                    {"EmployeeID": 1, "Name": "John Doe", "Position": "Manager"},
                    {"EmployeeID": 2, "Name": "Jane Smith", "Position": "Developer"}
                 ]';

-- JSON ডেটাতে Position আপডেট করা
SET @jsonData = JSON_MODIFY(@jsonData, '$[0].Position', 'Senior Manager');

SELECT @jsonData;

এখানে, JSON_MODIFY() ফাংশনটি JSON ডেটাতে Position এর মান 'Senior Manager' করে দিয়েছে।


সারাংশ

  • XML ডেটা ম্যানিপুলেশন: SQL Server-এ XML ডেটা টাইপ ব্যবহার করে XML ডেটাকে তৈরি, ইনসার্ট, আপডেট, এবং কুয়েরি করা যায়। nodes(), value(), এবং modify() ফাংশনগুলি XML ডেটার সাথে কাজ করতে ব্যবহৃত হয়।
  • JSON ডেটা ম্যানিপুলেশন: SQL Server-এ JSON ডেটার সাথে কাজ করার জন্য JSON_VALUE(), OPENJSON(), এবং JSON_MODIFY() ফাংশন ব্যবহৃত হয়। JSON ডেটাকে টেবিল ফরম্যাটে রূপান্তর করা, ডেটা এক্সট্র্যাক্ট করা এবং আপডেট করা সহজ হয় এই ফাংশনগুলির মাধ্যমে।

এই ফাংশনগুলি আপনাকে XML এবং JSON ডেটার সাথে কাজ করতে সহায়তা করে, যাতে আপনি SQL Server-এ ডেটা ম্যানিপুলেশন এবং ডেটা এনালাইসিস করতে পারেন।

Content added By

T-SQL (Transact-SQL) SQL Server এর জন্য একটি এক্সটেনশন, যা XML ডেটা হ্যান্ডলিংয়ের জন্য শক্তিশালী ফিচার প্রদান করে। SQL Server-এ XML ডেটা স্টোর করা, কুয়েরি করা, এবং ম্যানিপুলেট করার জন্য বিশেষ ফাংশন এবং মেথড রয়েছে। T-SQL এর মাধ্যমে আপনি সহজেই XML ডেটা রিড, লেখ, আপডেট, এবং প্রসেস করতে পারেন।

এখানে, XML ডেটা হ্যান্ডলিং এর জন্য T-SQL এর কিছু মূল ফিচার এবং উদাহরণ দেওয়া হলো।


1. XML ডেটা টাইপ

SQL Server তে XML ডেটা টাইপ ব্যবহার করা হয়, যা XML ডেটা রেকর্ড হিসেবে টেবিলের কলাম হিসেবে সংরক্ষণ করতে সক্ষম। আপনি যেকোনো টেবিলের কলামকে XML টাইপ সেট করতে পারেন।

XML কলাম তৈরি করা:

CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY,
    Name NVARCHAR(100),
    PersonalDetails XML
);

এখানে, PersonalDetails কলামটি XML ডেটা টাইপ হিসেবে সংরক্ষিত হবে।


2. XML ডেটা ইনসার্ট করা

XML ডেটা টেবিলে ইনসার্ট করতে হলে, আপনি XML ডেটা স্ট্রিং হিসেবে ইনসার্ট করতে পারেন।

XML ডেটা ইনসার্ট করা:

INSERT INTO Employees (EmployeeID, Name, PersonalDetails)
VALUES (1, 'John Doe', 
    '<Employee>
        <Age>35</Age>
        <Gender>Male</Gender>
        <Address>123 Main St, City, Country</Address>
    </Employee>');

এখানে PersonalDetails কলামে XML ডেটা ইনসার্ট করা হয়েছে, যা Employee এর ব্যক্তিগত তথ্য ধারণ করছে।


3. XML ডেটা রিড করা

XML ডেটা কুয়েরি করার জন্য XQuery ব্যবহার করা হয়, যা SQL Server এ XML ডেটা থেকে নির্দিষ্ট উপাদান বা তথ্য বের করতে সাহায্য করে।

XML ডেটা কুয়েরি করা:

SELECT EmployeeID, 
       Name, 
       PersonalDetails.value('(/Employee/Age)[1]', 'INT') AS Age,
       PersonalDetails.value('(/Employee/Gender)[1]', 'NVARCHAR(10)') AS Gender
FROM Employees
WHERE EmployeeID = 1;

এখানে, value() মেথড ব্যবহার করা হয়েছে XML ডেটা থেকে নির্দিষ্ট উপাদান (যেমন, Age এবং Gender) বের করার জন্য। (/Employee/Age)[1] XQuery দ্বারা XML ডেটার থেকে প্রথম Age ট্যাগের মান বের করা হচ্ছে।


4. XML ডেটা আপডেট করা

XML ডেটা আপডেট করার জন্য modify() মেথড ব্যবহার করা হয়, যা XML ডেটার মধ্যে নির্দিষ্ট উপাদান পরিবর্তন করতে সাহায্য করে।

XML ডেটা আপডেট করা:

UPDATE Employees
SET PersonalDetails.modify('replace value of (/Employee/Age/text())[1] with "36"')
WHERE EmployeeID = 1;

এখানে, modify() মেথড ব্যবহার করে Age উপাদানটির মান 36 দিয়ে আপডেট করা হয়েছে।


5. XML ডেটা ফর্ম্যাটিং এবং আউটপুট

T-SQL এর মাধ্যমে XML ডেটা আউটপুটকে XML ফরম্যাটে রূপান্তর করতে FOR XML ক্লজ ব্যবহার করা হয়। এটি কুয়েরির আউটপুটকে XML ডেটা হিসেবে রিটার্ন করে।

XML আউটপুট তৈরি করা:

SELECT EmployeeID, Name
FROM Employees
FOR XML PATH('Employee'), ROOT('Employees');

এখানে, FOR XML PATH ব্যবহার করে SQL আউটপুটকে XML ফরম্যাটে কনভার্ট করা হয়েছে এবং ROOT('Employees') ব্যবহার করে মূল ট্যাগ Employees যোগ করা হয়েছে।

আউটপুট হবে:

<Employees>
  <Employee>
    <EmployeeID>1</EmployeeID>
    <Name>John Doe</Name>
  </Employee>
</Employees>

6. XML ডেটা ফিল্টারিং

T-SQL তে XML ডেটা থেকে নির্দিষ্ট উপাদান বের করার জন্য nodes() এবং value() মেথড ব্যবহার করা হয়। nodes() একটি XML ডকুমেন্ট থেকে একাধিক নোড রিটার্ন করে এবং value() নির্দিষ্ট নোডের মান রিটার্ন করে।

XML ডেটা ফিল্টারিং এবং এক্সট্রাকশন:

DECLARE @xmlData XML
SET @xmlData = 
    '<Employees>
        <Employee>
            <EmployeeID>1</EmployeeID>
            <Name>John Doe</Name>
            <Age>35</Age>
        </Employee>
        <Employee>
            <EmployeeID>2</EmployeeID>
            <Name>Jane Smith</Name>
            <Age>28</Age>
        </Employee>
    </Employees>';

SELECT EmployeeData.Employee.value('(EmployeeID)[1]', 'INT') AS EmployeeID,
       EmployeeData.Employee.value('(Name)[1]', 'NVARCHAR(100)') AS Name
FROM @xmlData.nodes('/Employees/Employee') AS EmployeeData(Employee);

এখানে, nodes() ব্যবহার করে XML ডেটার Employee নোডগুলোর উপর কাজ করা হয়েছে, এবং value() দিয়ে নির্দিষ্ট উপাদান যেমন EmployeeID এবং Name বের করা হয়েছে।

আউটপুট:

EmployeeID | Name
-----------|----------------
1          | John Doe
2          | Jane Smith

7. XML ডেটা এবং SQL টেবিলের মধ্যে কনভার্সন

SQL Server তে XML ডেটা টেবিলের রেকর্ড হিসেবে স্টোর করতে বা XML ডেটাকে টেবিল ফরম্যাটে রূপান্তর করতে nodes(), value(), এবং query() মেথড ব্যবহার করা হয়।

XML থেকে SQL টেবিলে ডেটা ইনসার্ট করা:

DECLARE @xml XML
SET @xml = 
    '<Employees>
        <Employee>
            <EmployeeID>1</EmployeeID>
            <Name>John Doe</Name>
            <Age>35</Age>
        </Employee>
        <Employee>
            <EmployeeID>2</EmployeeID>
            <Name>Jane Smith</Name>
            <Age>28</Age>
        </Employee>
    </Employees>';

INSERT INTO Employees (EmployeeID, Name, Age)
SELECT
    EmployeeData.Employee.value('(EmployeeID)[1]', 'INT'),
    EmployeeData.Employee.value('(Name)[1]', 'NVARCHAR(100)'),
    EmployeeData.Employee.value('(Age)[1]', 'INT')
FROM @xml.nodes('/Employees/Employee') AS EmployeeData(Employee);

এখানে, XML ডেটা থেকে nodes()value() ব্যবহার করে টেবিলের কলামে ডেটা ইনসার্ট করা হয়েছে।


উপসংহার:

T-SQL দিয়ে XML ডেটা হ্যান্ডলিং খুবই শক্তিশালী এবং কার্যকরী হতে পারে। SQL Server এ XML ডেটা ইনসার্ট, আপডেট, রিড, এবং প্রক্রিয়া করার জন্য XML ডেটা টাইপ, XQuery, nodes(), value(), এবং modify() ফাংশন ব্যবহার করা হয়। T-SQL এর এই ক্ষমতা ব্যবহার করে আপনি আপনার ডেটাবেসে XML ডেটার মাধ্যমে আরও জটিল কুয়েরি এবং ডেটা প্রসেসিং করতে পারবেন।

Content added By

FOR XML PATH এবং AUTO দুটি SQL Server-এ XML ডেটা ফরম্যাটে রেজাল্ট রিটার্ন করার জন্য ব্যবহৃত হয়। এই দুটি পদ্ধতি SQL কুয়েরির আউটপুটকে XML ডেটা ফরম্যাটে রূপান্তরিত করতে সাহায্য করে। বিশেষত, যখন আপনি SQL Server থেকে XML ডেটা তৈরি করতে চান, তখন এই পদ্ধতিগুলি অত্যন্ত কার্যকরী হয়।

1. FOR XML PATH

FOR XML PATH একটি T-SQL কুয়েরি এক্সটেনশন যা রেজাল্টসেটকে XML ফরম্যাটে রূপান্তরিত করে। এটি একটি কাস্টম XML ফরম্যাট তৈরি করতে সাহায্য করে, এবং এটি সাধারনত GROUP BY বা JOIN এর সাথে ব্যবহার করা হয়।

Syntax:

SELECT column1, column2
FROM table_name
FOR XML PATH('root_element')

এখানে, root_element হল XML এর রুট ট্যাগ, যেটি আপনি কাস্টমাইজ করতে পারেন।

উদাহরণ:

ধরা যাক, আমাদের একটি Employees টেবিল রয়েছে:

EmployeeIDEmployeeNameDepartment
1John DoeHR
2Jane SmithIT

আপনি যদি এই ডেটা XML ফরম্যাটে রিটার্ন করতে চান, তাহলে FOR XML PATH ব্যবহার করা হবে।

SELECT EmployeeID, EmployeeName, Department
FROM Employees
FOR XML PATH('Employee');

আউটপুট:

<Employee>
    <EmployeeID>1</EmployeeID>
    <EmployeeName>John Doe</EmployeeName>
    <Department>HR</Department>
</Employee>
<Employee>
    <EmployeeID>2</EmployeeID>
    <EmployeeName>Jane Smith</EmployeeName>
    <Department>IT</Department>
</Employee>

এখানে:

  • FOR XML PATH('Employee') প্রতিটি রেকর্ডকে <Employee> ট্যাগের মধ্যে এনক্যাপসুলেট করছে।
  • XML ফরম্যাটে আউটপুট প্রত্যাশিত হিসেবে দেখাচ্ছে।

2. FOR XML AUTO

FOR XML AUTO একটি সহজ এবং আরও অটোমেটিক পদ্ধতি, যা SQL Server কুয়েরি থেকে সরাসরি XML আউটপুট তৈরি করে। এটি কলামের নামের উপর ভিত্তি করে XML ট্যাগ তৈরি করে এবং অটোমেটিক XML হায়ারারকি তৈরি করে।

Syntax:

SELECT column1, column2
FROM table_name
FOR XML AUTO

উদাহরণ:

ধরা যাক, আমাদের আবার Employees টেবিল আছে:

SELECT EmployeeID, EmployeeName, Department
FROM Employees
FOR XML AUTO;

আউটপুট:

<Employees EmployeeID="1" EmployeeName="John Doe" Department="HR" />
<Employees EmployeeID="2" EmployeeName="Jane Smith" Department="IT" />

এখানে:

  • FOR XML AUTO SQL Server এর মাধ্যমে একটি সহজ XML স্ট্রাকচার তৈরি করছে যেখানে প্রতিটি কলামের নাম XML ট্যাগের মতো হয়ে যায়।
  • এটি একটি দ্রুত এবং সরল পদ্ধতি XML আউটপুট তৈরি করতে।

FOR XML PATH এবং AUTO এর মধ্যে পার্থক্য

পদ্ধতিFOR XML PATHFOR XML AUTO
কাস্টমাইজেশনউচ্চ স্তরের কাস্টমাইজেশন করা যায়, যেমন XML ট্যাগ নির্ধারণ।কম কাস্টমাইজেশন, কলামের নাম স্বয়ংক্রিয়ভাবে ট্যাগ হয়।
XML Structureআপনার পছন্দ অনুযায়ী XML স্ট্রাকচার তৈরি করা যায়।সহজ এবং সরল XML স্ট্রাকচার তৈরি করে।
ডাটা গ্রুপিংGROUP BY এবং JOIN এর সাথে আরও সহজে ব্যবহার করা যায়।সাধারণত একক টেবিলের জন্য ব্যবহৃত হয়।
ব্যবহারযখন জটিল XML আউটপুট প্রয়োজন হয়, তখন ব্যবহার করুন।দ্রুত এবং সহজ XML আউটপুট তৈরির জন্য ব্যবহার হয়।

শেষ কথা

  • FOR XML PATH যখন আপনি একটি কাস্টম XML স্ট্রাকচার তৈরি করতে চান, যেমন নেস্টেড ট্যাগ, বা অনেকগুলি টেবিল বা কলামের ডেটা একত্রে একত্রিত করতে চান, তখন এটি ভালোভাবে কাজ করে।
  • FOR XML AUTO সাধারণত সোজা এবং দ্রুত XML আউটপুট তৈরি করার জন্য ব্যবহৃত হয়, যেখানে XML স্ট্রাকচার খুবই সরল থাকে এবং শুধুমাত্র সরাসরি কলামের নাম XML ট্যাগ হিসেবে ব্যবহৃত হয়।
Content added By

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

XML (eXtensible Markup Language) এবং JSON (JavaScript Object Notation) হলো দুটি জনপ্রিয় ডেটা ফরম্যাট, যা ডেটার স্টোরেজ, বিনিময় এবং প্রসেসিংয়ের জন্য ব্যবহৃত হয়। SQL Server 2016 এবং পরবর্তী সংস্করণগুলোতে XML এবং JSON ডেটা প্রক্রিয়াকরণ এবং ম্যানিপুলেশনের জন্য বিভিন্ন ফাংশন এবং অপশন রয়েছে।

XML ডেটা ম্যানিপুলেশন

SQL Server এ XML ডেটা টেবিলের একটি কলামে সংরক্ষিত থাকতে পারে এবং T-SQL এর মাধ্যমে XML ডেটার সাথে বিভিন্ন কার্যক্রম করা যেতে পারে। SQL Server XML ডেটা টাইপ সহ FOR XML, XML PATH, OPENXML, এবং XML Data Type Methods ব্যবহার করে XML ডেটা প্রসেসিং সমর্থন করে।

XML ডেটা টেবিলে স্টোর করা:

DECLARE @xmlData XML;

SET @xmlData = '
<Employees>
    <Employee>
        <EmployeeID>1</EmployeeID>
        <EmployeeName>John Doe</EmployeeName>
        <Position>Manager</Position>
    </Employee>
    <Employee>
        <EmployeeID>2</EmployeeID>
        <EmployeeName>Jane Smith</EmployeeName>
        <Position>Developer</Position>
    </Employee>
</Employees>';

-- XML ডেটা টেবিলে সংরক্ষণ
SELECT @xmlData AS EmployeesData;

এখানে, একটি XML ডেটা সেট তৈরি করা হয়েছে এবং সেটি টেবিলে স্টোর করা হয়েছে। Employee এলিমেন্টের মধ্যে EmployeeID, EmployeeName, এবং Position সম্পর্কিত ডেটা রয়েছে।

XML ডেটা থেকে ভ্যালু এক্সট্র্যাক্ট করা:

-- XML থেকে নির্দিষ্ট ভ্যালু বের করা
SELECT
    EmployeeData.Employee.value('(EmployeeID/text())[1]', 'INT') AS EmployeeID,
    EmployeeData.Employee.value('(EmployeeName/text())[1]', 'VARCHAR(100)') AS EmployeeName
FROM @xmlData.nodes('/Employees/Employee') AS EmployeeData(Employee);

এখানে:

  • .value() মেথড ব্যবহার করে XML এর নির্দিষ্ট এলিমেন্ট থেকে ভ্যালু বের করা হচ্ছে। (EmployeeID/text())[1] XML থেকে EmployeeID ট্যাগের মান বের করবে।

XML ডেটাতে নতুন এলিমেন্ট অ্যাড করা:

-- XML ডেটাতে নতুন এলিমেন্ট অ্যাড করা
SET @xmlData.modify('
    insert <Employee>
               <EmployeeID>3</EmployeeID>
               <EmployeeName>Mark Johnson</EmployeeName>
               <Position>Analyst</Position>
           </Employee>
    as last into (/Employees)[1]');
           
-- নতুন XML দেখতে
SELECT @xmlData AS UpdatedEmployeesData;

এখানে, .modify() মেথড ব্যবহার করে XML ডেটাতে নতুন Employee এলিমেন্ট যোগ করা হয়েছে।


JSON ডেটা ম্যানিপুলেশন

SQL Server 2016 এবং পরবর্তী সংস্করণে JSON ডেটা হ্যান্ডলিংয়ের জন্য ইন-বিল্ট ফাংশন রয়েছে, যেমন JSON_VALUE, JSON_QUERY, এবং OPENJSON। এই ফাংশনগুলি JSON ডেটা প্রসেস এবং এক্সট্র্যাক্ট করতে ব্যবহৃত হয়।

JSON ডেটা স্টোর করা:

DECLARE @jsonData NVARCHAR(MAX);

SET @jsonData = '[
    {"EmployeeID": 1, "EmployeeName": "John Doe", "Position": "Manager"},
    {"EmployeeID": 2, "EmployeeName": "Jane Smith", "Position": "Developer"}
]';

-- JSON ডেটা টেবিলে সংরক্ষণ
SELECT @jsonData AS EmployeesData;

এখানে, একটি JSON ডেটাসেট তৈরি করা হয়েছে যেখানে দুইটি Employee অবজেক্ট রয়েছে।

JSON ডেটা থেকে ভ্যালু এক্সট্র্যাক্ট করা:

-- JSON থেকে নির্দিষ্ট ভ্যালু বের করা
SELECT 
    JSON_VALUE(@jsonData, '$[0].EmployeeID') AS EmployeeID,
    JSON_VALUE(@jsonData, '$[0].EmployeeName') AS EmployeeName

এখানে:

  • JSON_VALUE() ফাংশন ব্যবহার করে JSON থেকে নির্দিষ্ট ফিল্ডের মান বের করা হচ্ছে। $[0].EmployeeID প্রথম Employee অবজেক্টের EmployeeID রিটার্ন করবে।

JSON ডেটা থেকে সাবজসন এক্সট্র্যাক্ট করা:

-- JSON থেকে সাবজসন বের করা
SELECT JSON_QUERY(@jsonData, '$') AS AllEmployees;

এখানে:

  • JSON_QUERY() ফাংশন ব্যবহার করে পুরো JSON অবজেক্টকে সাবজসন আকারে ফেরত পাওয়া যাচ্ছে।

JSON ডেটাতে নতুন ফিল্ড অ্যাড করা:

-- JSON ডেটাতে নতুন ফিল্ড অ্যাড করা
SET @jsonData = JSON_MODIFY(@jsonData, '$[0].Salary', 5000);

-- আপডেট করা JSON ডেটা দেখতে
SELECT @jsonData AS UpdatedJsonData;

এখানে:

  • JSON_MODIFY() ফাংশন ব্যবহার করে প্রথম Employee অবজেক্টের Salary ফিল্ড অ্যাড করা হয়েছে।

OPENJSON এর মাধ্যমে JSON ডেটা এক্সট্র্যাক্ট করা:

-- JSON ডেটা টেবিলে রূপান্তর করা
SELECT *
FROM OPENJSON(@jsonData)
WITH (
    EmployeeID INT '$.EmployeeID',
    EmployeeName NVARCHAR(100) '$.EmployeeName',
    Position NVARCHAR(100) '$.Position'
);

এখানে:

  • OPENJSON() ফাংশন ব্যবহার করে JSON ডেটাকে রিলেশনাল টেবিল ফরম্যাটে রূপান্তরিত করা হয়েছে, যেখানে প্রতিটি JSON অবজেক্ট একটি রেকর্ড হিসেবে রিটার্ন হয়।

XML এবং JSON এর মধ্যে পার্থক্য

  1. স্ট্রাকচার:
    • XML: স্ট্রাকচার্ড ডেটা ফরম্যাট যা একটি হায়ারার্কিক্যাল ট্রী স্ট্রাকচার অনুসরণ করে।
    • JSON: হালকা ও দ্রুত ডেটা বিনিময়ের ফরম্যাট, যেটি Key-Value Pair তে ডেটা স্টোর করে।
  2. স্টোরেজ এবং এক্সট্র্যাকশন:
    • XML ডেটা স্টোরেজে কিছুটা ভারী হতে পারে এবং XML ডেটার সাথে কাজ করার জন্য সুনির্দিষ্ট ফাংশন ব্যবহার করতে হয়।
    • JSON তুলনামূলকভাবে সহজ এবং দ্রুত। JSON ডেটা এক্সট্র্যাক্ট করতে SQL Server এ বিভিন্ন বিল্ট-ইন ফাংশন রয়েছে যেমন JSON_VALUE, JSON_QUERY, এবং OPENJSON
  3. পারফরম্যান্স:
    • XML: বড় XML ডেটাতে কাজ করার সময় কিছুটা পারফরম্যান্স কমে যেতে পারে।
    • JSON: JSON ডেটা সাধারণত ছোট এবং কম্প্যাক্ট হয়, তাই এটি পারফরম্যান্সে কিছুটা দ্রুত হতে পারে।

সারাংশ

  • XML এবং JSON উভয়ই ডেটা বিনিময়ের শক্তিশালী ফরম্যাট, তবে XML স্ট্রাকচার তুলনায় বেশি জটিল এবং ভারী হয়।
  • SQL Server এ XML এবং JSON ডেটার জন্য আলাদা আলাদা ফাংশন যেমন .value(), .modify(), OPENJSON(), JSON_VALUE() ইত্যাদি রয়েছে যা ডেটা এক্সট্র্যাক্ট, ম্যানিপুলেট এবং প্রসেস করতে সাহায্য করে।
  • JSON ডেটা সাধারণত lightweight এবং compact, এবং JSON_VALUE, JSON_QUERY ইত্যাদি ফাংশনের মাধ্যমে এটি কার্যকরীভাবে ম্যানিপুলেট করা যায়। XML ডেটা ব্যবহারের সময় আপনি .nodes(), .value() ইত্যাদি ফাংশন ব্যবহার করতে পারেন।
Content added By
Promotion

Are you sure to start over?

Loading...