أكاديمية الصقر للتدريب

لوحة التميز الأسبوعي
العضو المتميز المشرف المتميز المراقب المتميز المدير المتميز الموضوع المتميز القسم المتميز
العضو المتميز المشرف المتميز المراقب المتميز المدير المتميز الموضوع المتميز القسم المتميز
هانى على ali mohamed ali-- لا تميز خلال هذه الفترة لا تميز خلال هذه الفترة منع ادخال البيانات بعدة شروط اكسيل اسئله واجابات


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





تصدير البيانات من ملف إكسل إلى قواعد بيانات SQL SERVER

بناء طلب العضو رمضان بكري سوف نتحدث اليوم عن كيفية تصدير البيانات من ملف إكسل (Excel) إلى قواعد بيانات (MS SQL Server) ..



24-01-2018 02:30 مساء
عبدالجيد
عضو محترف
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 26-08-2017
رقم العضوية : 194
المشاركات : 387
الدولة : مصر
الجنس : ذكر
تاريخ الميلاد : 15-2-1986
الدعوات : 2
يتابعهم : 158
يتابعونه : 37
قوة السمعة : 2958
موقعي : زيارة موقعي
 offline 

بناء طلب العضو رمضان بكري
سوف نتحدث اليوم عن كيفية تصدير البيانات من ملف إكسل (Excel) إلى قواعد بيانات (MS SQL Server) ولكن قبل أن نبدء هنالك قواعد يجب أن تتبع

• يجب أن تضع عناوين (Header) للبيانات التي لديك في الصف الأول بمعنى أخر يجب أن تكون لديك أعمدة ذات أسماء كما هو موضح في الصور التالية

imort_excel_to_sql_server1

imort_excel_to_sql_server2

• يجب أن تقوم بتصميم جدول في قاعدة بيانات (SQL Server) بنفس الأسماء إذا أردت (غير ضروري) مع إختيار أنواع البيانات المناسبة (Data Type) مثلا (int,varchar2,numeric…). مع أهمية الترتيب في تصميم الأعمدة فكما ترى في الأعلى لدينا ملف أكسل يحتوي على عمود إسمه (ID) وعمود أخر إسمه (Name).إذا عند تصميم الجدول تنشيء عمود إسم (ID) ثم عمود أخر إسمه (Name) على التوالي.

والان بعد أن رأينا القواعد نأتي الان الى صلب الموضوع وهو كيف يمكن كتابة شفرة (Code) لنقل الملفات

حتى نسهل الموضوع سوف أضع الشفرة على أجزاء بخطوات

اولا نضع معلومات الخاصة بنص الإتصال (Connection String) في متغير نصي

 


string excelConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:xlsExcelFile.xls ;Extended Properties=Excel 8.0";

 

طبعا هذه المعلومات ثابتة ماعدا جزئية مسار ملف الاكسل يجب عليك تغيرها الى مسار ملفك

ثانيا قم بالإتصال بقاعدة البيانات عن طريق إستخدام (OleDbConnection) وقم بإرسال نص الإتصال إليه



using (OleDbConnection connection =
new OleDbConnection(excelConnectionString))
{

ثالثا قم بإنشاء كائن من نوع (OleDbCommand) واكتب إستعلام الإختيار (Select Statment) وايضا حدد له كائن الإتصال كالتالي

 


OleDbCommand command = new OleDbCommand
("Select * FROM [Sheet1$]", connection);

 

لاحظ معي جملة الإتصال ولاحظ أن إسم الجدول هو إسم الورقة (Sheet) طبعا يمكنك تغيره من ملف إكسل ولاحظ أيظا أنك يجب أن تتبعها مباشرة وبدون فواصل رمز الدولار($)

رابعا قم بفتح الإتصال

 


connection.Open();

 

خامسا قم بتنفيذ الإستعلام بإستخدام الدالة ExecuteReader

 


using (DbDataReader reader = command.ExecuteReader())
{

 

الأن فإن جميع البيانات الموجودة في ملف إكسل تم تصديرها وأصبحت موجودة في كائن من نوع (DbDataReader)

بعد أن قمنا بتصدير البيانات وإسنادها يأتي الان العمل على جزئية قواعد بيانات (SQL SERVER)

أولا نضع معلومات الخاصة بنص الإتصال (Connection String) في متغير نصي

 


string sqlConnectionString = "Data Source=Your DataSource;Initial Catalog=Your DataBase;Integrated Security=True";

 

لاحظ معي أنه يجب أن تكتب إسم مصدر البيانات ( DataSource) بعد ذلك إسم قاعدة البيانات (Initial Catalog)

ثانيا إستخدام كائن من نوع (SqlBulkCopy) والغرض من ذلك أن هذا الكائن(object) يقوم بنقلة كتلة (Bulk) من البيانات من مصدر إلى مصدرأخر بطريقة فعالة جدا جدا خاصة إذا كان حجم البيانات كبير جدا ونقوم بارسال نص الإتصال إليه كالتالي.

 


using (SqlBulkCopy bulkCopy =  new SqlBulkCopy(sqlConnectionString))
{

 

ثالثا نستخدم خاصية (DestinationTableName) والتي من خلالها نحدد إسم الجدول الذي نريد أن نصدر إليه البيانات في قاعدة بيانات MS SQL SERVER

 


bulkCopy.DestinationTableName = "Table Name";

 

رابعا واخير نقوم بإستخدام دالة (WriteToServer) والتي تقوم بكتابة البيانات الي المصدر ونرسل لها الكائن من نوع DbDataReader

 


bulkCopy.WriteToServer(dr);





bulkCopy.WriteToServer(reader);
// Connection String to Excel Workbook
string excelConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=! ;Extended Properties=Excel 8.0

// Create Connection to Excel Workbook
using (OleDbConnection connection =
new OleDbConnection(excelConnectionString))
{
OleDbCommand command = new OleDbCommand
("Select * FROM [Sheet1$]", connection);

connection.Open();

// Create DbDataReader to Data Worksheet
using (DbDataReader dr = command.ExecuteReader())
{
// SQL Server Connection String
string sqlConnectionString = "Data Source=!;Initial Catalog=!;Integrated Security=True";

// Bulk Copy to SQL Server
using (SqlBulkCopy bulkCopy =
new SqlBulkCopy(sqlConnectionString))
{
bulkCopy.DestinationTableName = "!";
bulkCopy.WriteToServer(dr);
}
}
}

 

لاحظ معي أن أي شيء وضعت عليه علامة (!) تحتاج إلى تغيره إذا أردت أن يتنفذ البرنامج في جهازك

الفائدة الحقيقة

قد يسئل البعض مالذي سوف أستفيده من توريد البيانات من ملف إكسل الى قواعد البيانات ولكي أجيبك عن هذا التساؤل سوف أضح لك حالات حقيقية ( Real Cases)

الحالة الأولى تحويل البيانات من قاعدة بيانات إلى قاعدة بيانات (SQL SERVER)

الأن تخيل لو أن لديك قاعدة بيانات (Oracle,Syb*ase,MySql..etc) وتريد أن تحول البيانات من قواعد البيانات السابقة الى قاعدة بيانات (SQL SERVER) بناء على قرارات إدارية ماذا سوف تفعل .

طبعا هنالك أدوات تحويل ومن هذه الأدوات (SQL Server Integration Services (SSIS ولكن في بعض الحالات وهي كثيرة جدا لايمكن نقل البيانات على الأقل كليا فقد تجد أن بعضها تم نقله والبعض الأخر لم يتم نقله.فأفضل حل في هذه الحالة هو أن تقوم بتصدير (Export) جميع البيانات إلى ملف ومن ملف إكسل تقوم بتوريدها (Import) إلى قواعد بيانات (SQL SERVER) طبعا معظم المحررات (Editors) الخاصة بقواعد البيانات مثل برنامج (Toad) وغيرها الكثير لديها إمكانية توريد إلى إكسل (Export to Excel).

الحالة الثانية

تخيل معي لو أنك في منظمة وأرادو منك بناء نظام له علاقة بقواعد البيانات ولايوجد لديهم قواعد بيانات بعد وكل البيانات لديهم يتم تخزينها في ملفات إكسل فطبعا سوف تستخدم هذه الطريقة بلاشك
رابط الموضوع(منقول)

لمشاهدة الروابط يلزمك التسجيل في أكاديمية الصقر للتدريب




24-01-2018 03:27 مساء
مشاهدة مشاركة منفردة [1]
Yasser Elaraby
المشرف العام
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 1
المشاركات : 1293
الجنس : ذكر
الدعوات : 13
يتابعهم : 2
يتابعونه : 724
قوة السمعة : 9894
موقعي : زيارة موقعي
عدد الإجابات: 9
 offline 
look/images/icons/i1.gif تصدير البيانات من ملف إكسل إلى قواعد بيانات SQL SERVER
مشكور وجزاكم الله خيرا 
142

توقيع :Yasser Elaraby
663013020


24-01-2018 04:08 مساء
مشاهدة مشاركة منفردة [2]
رمضان بكري
عضو ماسي
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 26-08-2017
رقم العضوية : 153
المشاركات : 442
الجنس : ذكر
تاريخ الميلاد : 9-7-1981
الدعوات : 4
يتابعهم : 5
يتابعونه : 38
قوة السمعة : 1792
 offline 
look/images/icons/i1.gif تصدير البيانات من ملف إكسل إلى قواعد بيانات SQL SERVER

جزاك الله خيرا استاذنا الجليل 
متابع مع حضرتك  
 يجعله في ميزان حسناتك 
متعرفش الموضوع ده يهمني قد ايه 
التجربة خير النجاح 

 



27-01-2018 12:00 صباحا
مشاهدة مشاركة منفردة [3]
YasserKhalil
مراقب عام
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10444
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 24
يتابعهم : 1
يتابعونه : 535
قوة السمعة : 36522
عدد الإجابات: 254
 offline 
look/images/icons/i1.gif تصدير البيانات من ملف إكسل إلى قواعد بيانات SQL SERVER
بارك الله فيك أخي العزيز عبد الجيد
لو لديك خلفية جيدة بالـ SQL لما لا تفرد موضوع للمبتدئين لهذا الموضوع ، لأنه سيفيد الكثير من الأعضاء بلا شك
تقبل تحياتي

03-04-2019 05:53 مساء
مشاهدة مشاركة منفردة [4]
EM_ACC
عضو فعال
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 24-08-2017
رقم العضوية : 84
المشاركات : 232
الجنس : ذكر
تاريخ الميلاد : 24-9-1981
الدعوات : 1
يتابعهم : 4
يتابعونه : 3
قوة السمعة : 338
 offline 
look/images/icons/i1.gif تصدير البيانات من ملف إكسل إلى قواعد بيانات SQL SERVER
المشاركة الأصلية كتبت بواسطة: YasserKhalil
بارك الله فيك أخي العزيز عبد الجيد
لو لديك خلفية جيدة بالـ SQL لما لا تفرد موضوع للمبتدئين لهذا الموضوع ، لأنه سيفيد الكثير من الأعضاء بلا شك
تقبل تحياتي

فعلا اخى ياسر
فى انتظار الرد من الاخ
عبد الجيد
توقيع :EM_ACC
إبراهيم أبوليله




الكلمات الدلالية
تصدير ، البيانات ، إكسل ، قواعد ، بيانات ، SERVER ،


 










اخلاء مسئولية: يخلى منتدى أكاديمية الصقر للتدريب مسئوليته عن اى مواضيع او مشاركات تندرج داخل الموقع ويحثكم على التواصل معنا ان كانت هناك اى إنتهاكات تتضمن اى انتهاك لحقوق الملكية الفكرية او الادبية لاى جهة - بالتواصل معنا من خلال نموذج مراسلة الإدارة .وسيتم اتخاذ الاجراءات اللازمة.
سياسة النشر: التعليقات المنشورة لا تعبر عن رأي منتدى أكاديمية الصقر للتدريب ولا نتحمل أي مسؤولية قانونية حيال ذلك ويتحمل كاتبها مسؤولية النشر.

الساعة الآن 04:34 مساء