الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

قراءة ملفات XML باستخدام T-SQL

مغلق
بدأه imadouzoun في 21 مارس 2006 · 0 رد · 1,660 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1

السلام عليكم و رحمة الله و بركاته :

سأحاول إخواني أن أضع مجموعة أفكار برمجية في T-SQL للتعامل مع الـ XML على التتالي .. وأطلب من كل شخص (مشرف أو عضو) أن المشاركة و النقد لأي كلام مكتوب وذلك لكي ترقى هذه الأفكار إلى المستوى المطلوب .. و تحقق الغرض المطلوب منها و هو الفائدة بإذن الله .

طبعاً توليد ملف Xml سأتكلم عنه لاحقاً بإذن الله و هو يشبه إلى حد كبير .. الموضوع الذي تحدثت عنه في السابق و هو :

تصدير سجلات جدول ما إلى ملف CSV أو ملف نصي

فقط يختلف استعلام جلب البيانات بعبارة الـ Sql قليلاً .. For Xml سأضع إن شاء الله مثال حول هذه الفكرة ..

لكن لدينا اليوم موضوع أجمل الاّن وهو قراء بيانات من ملف XML في الحقيقة قمت بالبحث على مواقع الـ T-SQL ووجدت أكثر من طريقة وسوف أطرح الأسهل بينها و للأسف كاتب الكود التالي واحد إسرئيلي كما يذكر الموقع ولكن نحن نريد الكود لا كاتب الكود .. عسى أن يكون مفيداَ :

Create  proc sp_translate_simple_xml
 (@XMLfile varchar(100))
AS

begin

declare @idoc int
declare @doc varchar(8000)
declare @xml_line varchar(200)
declare @bulkinscmd varchar(500)

set @doc =''

-- insert XML file into temporary table
Create table #tempXML
  (line varchar(8000))

set @bulkinscmd = 'BULK INSERT #tempXML FROM ' +
        '''' + @XMLfile + ''''

exec (@bulkinscmd) 

DECLARE xml_cursor CURSOR
   FOR SELECT * FROM #tempXML

-- create XML string in SQL SERVER memory
OPEN xml_cursor 
FETCH NEXT FROM xml_cursor INTO @xml_line
WHILE @@FETCH_STATUS = 0
 BEGIN
   SET @doc = @doc + rtrim(ltrim(@xml_line))
   FETCH NEXT FROM xml_cursor INTO @xml_line
 END 

close xml_cursor

deallocate xml_cursor

-- Select * from #tempXML --To Show the file contents
drop table #tempXML

--Create an internal representation of the XML document.
exec sp_xml_preparedocument @idoc OUTPUT, @doc

-- SELECT statement using OPENXML rowset provider
SELECT  text 
 FROM  OPENXML (@idoc, '/ROOT/customer/name') -- will give you the name contents
 WHERE text is not null

EXEC sp_xml_removedocument @idoc
END 
Go

----------------------

-- Test it
exec sp_translate_simple_xml 'E:\G.xml'

وفي حال وجدت أخي القارئ أي صعوبة في الكود سأحاول بعون الله توضيحة :rolleyes:

لا تنسى ملف الـ XML المثال في الملف المرفق .. ;)

G.rar

تم تعديل هذه المشاركة بواسطة imadouzoun في 21 مارس 2006 في 04:29

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

هذا الموضوع مغلق.

مواضيع مشابهة