مجموعة البيانات عند التقطيع xml إلى جداول متعددة في SQL server
-
06-07-2019 - |
سؤال
هذا يلي من هذا السؤال:
تعديل XML في SQL server لإضافة عقدة الجذر
بالإضافة إلى المشكلة المطروحة الآن ثابت في هذا السؤال أنا أيضا تقسيم الجدول الموجود في 2 حيث 2 الجدول هو الجدول الفرعي الأول مع المفتاح الأول.
لذلك حاليا
table1(ID, col1, col2, col3....coln)
أصبحت
table1(ID, col1, col2, col3)
و
table2(PK, FK_table1, col4, col5, ...coln)
في هذه اللحظة لم تتم إزالة أي شيء من القائمة جدول ، بإنشائها الثانية ، ولقد اكتشف الإخراج بناء حتى أستطيع أن أدخل في كلا الجدولين في آن واحد ، بما في ذلك وضع PK 1 الجدول 2 كما FK في 1 إدراج - حتى شيء من هذا القبيل ؛
INSERT INTO table1 col1, col2,...etc...
OUTPUT inserted.ID, col1, col2, ....
INTO table2(FK_table1, col1, col2, .... )
Select col.value('node1[1]', 'int') col1,
col.value('node2[1]', 'varchar(50)') col2,
....etc......
FROM @xml.nodes('//Items/Item') doc(col)
هذا بنجاح يدخل في كلا الجدولين في آن واحد ولكن تعتمد على حقيقة لم تتم إزالة الأعمدة من جدول1 بعد ، **و* النتائج في 1:1 العلاقة بين الجداول عند ما أحتاجه هو جدول1 أن يكون مجرد الصفوف متميزة col1 col2 ، col3 ، table2 عقد معلومات أكثر تفصيلا
أنا أتساءل إذا أنا ذاهب عن هذا الطريق الصحيح ؟ أنا ذاهب لتكون قادرة على القيام بذلك في 1 الاستعلام أو أنا ذاهب إلى كسر عليه ؟ أنا أفكر أنه قد أجاد xml الأولى إلى جدول1 ثم يفرم مرة أخرى بشكل منفصل في table2, الانضمام على جدول1 للحصول على FK لإدراج?أي شخص فعل هذا الشيء من قبل ؟
المحلول
نعم أنا فعلت مشابهة وتستخدم كل الاقتراحات اعتمادا على ما عمل آخر يجب أن أفعل
الخيارات:
أجاد XML مرة واحدة في tabe متغير حدد متميزة من ذلك إلى جدول1 ، حدد في table2
أجاد XML مرتين.
سأكون يميل إلى القيام تكلفة العملية (تمزيق XML) لأول مرة في دفعة واحدة.