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

نقل بيانات من جدول الى جدول آخرSQL

مغلق
بدأه firwall في 28 نوفمبر 2004 · 8 رد · 2,063 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

أخواني الاعزاء.

يوجد لدى جدولين في SQL SERVER واريد ان اقوم بعملية نقل السجلات من جدول الى اخر بواسطة COMMAND داخل الفيجول بيسك مع العلم بان الحقول في الجدولين متساوية ..

بمعنى اخر .. عملية تحويل البيانات من الجدول الاول الى الجدول الثاني مع عدم الاحتفاظ بالسجلات داخل الجدول الاول بعد نقلها الى الجدول الثاني..

وجزاكم الله خير الجزاء..

#2

توجد عدة طرق لعمل شيء كهذا:

1/

Dim cn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    
    Dim strcn As String
    Dim sql As String
    
    strcn = "driver=sql server; server=(local); database=wdomain; trusted_connection=yes"
    
    cn.Open strcn
    sql = "select col1,col2,col3 from table1"
    rs.Open sql, cn
    
    Do While Not rs.EOF
        cn.Execute "insert into table2(" + rs!col1 + ", " + rs!col2 + "," + rs!col3 + ")"
        rs.MoveNext
    Loop
    
    cn.Execute "truncate table table1"
    rs.Close
    cn.Close
    Set cn = Nothing
    Set rs = Nothing

ببساطة تستورد البيانات من الجدول الأول وتدخلها للجدول الثاني، ولحذفها كلها من الجدول الأول تنفذ الأمر truncate الذي يحذف كل سجلات الجدول بدون تسجيل حذف كل سجل في ملف الlog ، وبالتالي يكون أسرع من جملة delete. كما يمكن استعمال جملة delete.

2/ باستعمال جملة insert :

insert into table2( select col1, col2, col3 from table1)

سأتأكد من هذه الطريقة بالضبط وأجيبك بالتفصيل عليها لاحقا إن شاء الله.

تم تعديل هذه المشاركة بواسطة walcom في 28 نوفمبر 2004 في 11:05

فكر بطريقة أخرى

#3

شكرا اخي الكريم على اهتمامك الفعال على الرد في هذا الموضوع ..

اريد التوضيح بشكل اكثر دقة

انه لدي جدولين منشئين مسبقاً واريد ان واريد ان اقوم بنقل البيانات من الجدول الاول الى الجدول الثاني بغرض الترحيل بواسطة الاداة command كترحيل القيود المحاسبية..

شاكرين لك حسن تعاونك الدائم .. ودمتم

#4
اقتباس
انه لدي جدولين منشئين مسبقاً واريد ان واريد ان اقوم بنقل البيانات من الجدول الاول الى الجدول الثاني بغرض الترحيل بواسطة الاداة command كترحيل القيود المحاسبية..

في هذه الحالة أريد منك بنية قاعدة البيانات.

طريقة الترحيل لن تختلف كثيرا عن ما ذكرته في الرد السابق.

فكر بطريقة أخرى

#5

والله لا اعلم كيف اشكرك على اهتمامك البالغ في ايصال المعلومة بصورة شفافة إلي وجزاك الله خير الجزاء..

بالنسبة للحقول الجداول فهي كالتالي:

الجدول T1 ويوجد به ثلاثة حقول الاسم و الرقم و المبلغ.وهو عبارة عن الجدول الاول المراد الترحيل منه وبدون بقاء البيانات فيه.

الجدول الثاني T2 وبه ايضا نفس الثلاثة حقول الاولى وهي الاسم و الرقم و المبلغ وهو عبارة عن الجدول التى سيتم نقل السجلات والبيانات الية حسب الطلب ..

اتمنى ان اكون اوضحت الفكرة بشكل مبسط جداً ..

واخيرا اذ اشكرك شكر عميق على هذا الاهتمام..

#6

اخي الكريم .. لقد حاولت مراراً لتنفيذ الموضوع الذي طرحته لي ولكن هنالك حصل يحدث وهو في جملة

cn.Execute "insert into table2(" + rs!col1 + ", " + rs!col2 + "," + rs!col3 + ")"

والخطأ هو (Type mistak)

فارجوا من اخي مساعدتي قدر المستطاع

ولكم جزيل الشكر العميق

#7

معذرة على الخطأ، رسالة الخطأ Type mistake تصدر نتيجة الدمج بواسطة المعامل + لقيمة رقمية مأخوذة من الجدول مع جملة SQL النصية، والتصحيح هو:

cn.Execute "insert into table2(" +str( rs!col1) + ", " + str(rs!col2) + "," + str(rs!col3) + ")"

ببساطة حول كل قيمة رقمية إلى مقابلها النصي بالدالة str.

فكر بطريقة أخرى

#8

مشكور مشكور على هذه المعلومات القيمة .. واعتذر على تعبك معاي بس باقي نقطة واحدة فقط وهي :

كيف استطيع ان اجعلة يقوم بالترحيل على سجل سجل حسب الرقم الموضوع في text1 لان الامر truncate table يقوم بنقل السجلات كاملة وبدون اي تراجع فارجوا ان تتعاون معي في هذه النقطة..

المطلوب امكانية ترحيل السجلات حسب الرقم سجل سجل ..

#9
اقتباس
لان الامر truncate table يقوم بنقل السجلات كاملة وبدون اي تراجع

الظاهر عليك فهمتني غلط.

في الأعلى قلت:

truncate الذي يحذف كل سجلات الجدول بدون تسجيل حذف كل سجل في ملف الlog

وليس ينقل

بالنسبة للترحيل: شرحت الفهم العام للطريقة في الأعلى بالكود، جرب بالتعديل عليه.

لدي فكرة طريقة اخرى بstored procedure سأفصلها لك إن شاء الله لاحقا بعد تجريبها.

تم تعديل هذه المشاركة بواسطة walcom في 30 نوفمبر 2004 في 12:13

فكر بطريقة أخرى

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

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