- 0
سجل دخول لمتابعه هذا
متابعين
0

تصدير البيانات من ملف إكسل إلى قواعد بيانات SQL SERVER
بواسطة
Guest Xhack,
-
يستعرض القسم حالياً 0 members
لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .
بواسطة
Guest Xhack,
لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .
تم النشر منذ (معدل)
ملاحظة : بإمكانك قراءة الرابط هذا على مدونتي مستكشف الدوت نت وذلك لأن المواضيع هنا تذهب الى الصفحات التالية بعد مدة من الزمن
سوف نتحدث اليوم عن كيفية تصدير البيانات من ملف إكسل (Excel) إلى قواعد بيانات (MS SQL Server) ولكن قبل أن نبدء هنالك قواعد يجب أن تتبع
• يجب أن تضع عناوين (Header) للبيانات التي لديك في الصف الأول بمعنى أخر يجب أن تكون لديك أعمدة ذات أسماء كما هو موضح في الصور التالية
• يجب أن تقوم بتصميم جدول في قاعدة بيانات (SQL Server) بنفس الأسماء إذا أردت (غير ضروري) مع إختيار أنواع البيانات المناسبة (Data Type) مثلا (int,varchar2,numeric…). مع أهمية الترتيب في تصميم الأعمدة فكما ترى في الأعلى لدينا ملف أكسل يحتوي على عمود إسمه (ID) وعمود أخر إسمه (Name).إذا عند تصميم الجدول تنشيء عمود إسم (ID) ثم عمود أخر إسمه (Name) على التوالي.
والان بعد أن رأينا القواعد نأتي الان الى صلب الموضوع وهو كيف يمكن كتابة شفرة (Code) لنقل الملفات
حتى نسهل الموضوع سوف أضع الشفرة على أجزاء بخطوات
اولا نضع معلومات الخاصة بنص الإتصال (Connection String) في متغير نصي
طبعا هذه المعلومات ثابتة ماعدا جزئية مسار ملف الاكسل يجب عليك تغيرها الى مسار ملفك
ثانيا قم بالإتصال بقاعدة البيانات عن طريق إستخدام (OleDbConnection) وقم بإرسال نص الإتصال إليه
ثالثا قم بإنشاء كائن من نوع (OleDbCommand) واكتب إستعلام الإختيار (Select Statment) وايضا حدد له كائن الإتصال كالتالي
لاحظ معي جملة الإتصال ولاحظ أن إسم الجدول هو إسم الورقة (Sheet) طبعا يمكنك تغيره من ملف إكسل ولاحظ أيظا أنك يجب أن تتبعها مباشرة وبدون فواصل رمز الدولار($)
رابعا قم بفتح الإتصال
خامسا قم بتنفيذ الإستعلام بإستخدام الدالة ExecuteReader
الأن فإن جميع البيانات الموجودة في ملف إكسل تم تصديرها وأصبحت موجودة في كائن من نوع (DbDataReader)
بعد أن قمنا بتصدير البيانات وإسنادها يأتي الان العمل على جزئية قواعد بيانات (SQL SERVER)
أولا نضع معلومات الخاصة بنص الإتصال (Connection String) في متغير نصي
لاحظ معي أنه يجب أن تكتب إسم مصدر البيانات ( DataSource) بعد ذلك إسم قاعدة البيانات (Initial Catalog)
ثانيا إستخدام كائن من نوع (SqlBulkCopy) والغرض من ذلك أن هذا الكائن(object) يقوم بنقلة كتلة (Bulk) من البيانات من مصدر إلى مصدرأخر بطريقة فعالة جدا جدا خاصة إذا كان حجم البيانات كبير جدا ونقوم بارسال نص الإتصال إليه كالتالي.
ثالثا نستخدم خاصية (DestinationTableName) والتي من خلالها نحدد إسم الجدول الذي نريد أن نصدر إليه البيانات في قاعدة بيانات MS SQL SERVER
رابعا واخير نقوم بإستخدام دالة (WriteToServer) والتي تقوم بكتابة البيانات الي المصدر ونرسل لها الكائن من نوع DbDataReader
لاحظ معي أن أي شيء وضعت عليه علامة (!) تحتاج إلى تغيره إذا أردت أن يتنفذ البرنامج في جهازك
الفائدة الحقيقة
قد يسئل البعض مالذي سوف أستفيده من توريد البيانات من ملف إكسل الى قواعد البيانات ولكي أجيبك عن هذا التساؤل سوف أضح لك حالات حقيقية ( Real Cases)
الحالة الأولى تحويل البيانات من قاعدة بيانات إلى قاعدة بيانات (SQL SERVER)
الأن تخيل لو أن لديك قاعدة بيانات (Oracle,Sybase,MySql..etc) وتريد أن تحول البيانات من قواعد البيانات السابقة الى قاعدة بيانات (SQL SERVER) بناء على قرارات إدارية ماذا سوف تفعل .
طبعا هنالك أدوات تحويل ومن هذه الأدوات (SQL Server Integration Services (SSIS ولكن في بعض الحالات وهي كثيرة جدا لايمكن نقل البيانات على الأقل كليا فقد تجد أن بعضها تم نقله والبعض الأخر لم يتم نقله.فأفضل حل في هذه الحالة هو أن تقوم بتصدير (Export) جميع البيانات إلى ملف ومن ملف إكسل تقوم بتوريدها (Import) إلى قواعد بيانات (SQL SERVER) طبعا معظم المحررات (Editors) الخاصة بقواعد البيانات مثل برنامج (Toad) وغيرها الكثير لديها إمكانية توريد إلى إكسل (Export to Excel).
الحالة الثانية
تخيل معي لو أنك في منظمة وأرادو منك بناء نظام له علاقة بقواعد البيانات ولايوجد لديهم قواعد بيانات بعد وكل البيانات لديهم يتم تخزينها في ملفات إكسل فطبعا سوف تستخدم هذه الطريقة بلاشك .
الخلاصة
في ماسبق تدارسنا سوية كيف يمكن تصدير البيانات الى قواعد بيانات (SQL SERVER) من ملفات إكسل ورأينا سوية القيم الحقيقة لهذا الأسلوب والحالات الحقيقة التي قد تواجهك وكيف يمكن حلها.وطبعا لاأنسى أن أقول لكم أن هنالك طرق أخرى لنقل البيانات مثل إستخدام جملة الإدخال (Insert Statment) ولكن أكثرها فعالية في الإداء هو نقل البيانات ككتلة بإستخدام (SQLBulk) وفي الختام أتمنى أن أكون قد وفقت في الطرح
والله أعلم
ImportFromExcel.rar
تم تعديل بواسطه Xhackشارك هذا الرد
رابط المشاركة
شارك الرد من خلال المواقع ادناه