السلام عليكم ورحمة الله وبركاته
كيف استورد بيانات من ملف نصي (او حتى CSV) واخزنه في قاعدة البيانات SQL او اكسس
وشكراً لكم
السلام عليكم ورحمة الله وبركاته
كيف استورد بيانات من ملف نصي (او حتى CSV) واخزنه في قاعدة البيانات SQL او اكسس
وشكراً لكم
يوجد معالج يقوم بذلك imoprt/export وفي الاكسس ايضا يوجد الاستيراد import
TareqVB كتب:يوجد معالج يقوم بذلك imoprt/export وفي الاكسس ايضا يوجد الاستيراد import
صدقت بس انا كنت ابي حل مبرمجي لاني الاستيراد ليس لمره وحده بل راح يكون بشكل شبه يومي :wacko:
السلام عليكم
لم تذكر انك تريد حل برمجي لكن اعتقد اني رأيت نفس السؤال في قسم السي شارب وارجو ان يكون كذلك لذا انظر الى هذه المقالة لكيفية قراءة الملف النصي من خلال ADO.NET
والحل التقليدي هو قراءة الملف سطرا سطرا وبعد ذلك تقسيم كل سطر حسب الفاصل بين الحقول وتخزين هذه الاسطر في قاعدة البيانات
لقراءة الملف يوجد snippet لذلك في الدوت نت
ولتقسيم الحقول نستخدم split
TareqVB كتب:السلام عليكملم تذكر انك تريد حل برمجي لكن اعتقد اني رأيت نفس السؤال في قسم السي شارب وارجو ان يكون كذلك لذا انظر الى هذه المقالة لكيفية قراءة الملف النصي من خلال ADO.NET
والحل التقليدي هو قراءة الملف سطرا سطرا وبعد ذلك تقسيم كل سطر حسب الفاصل بين الحقول وتخزين هذه الاسطر في قاعدة البيانات
لقراءة الملف يوجد snippet لذلك في الدوت نت
ولتقسيم الحقول نستخدم split
انا اضفت الموضوع هنا لانه في منتدى اجنبي لاحظت واحد عملها مباشره بس مامشت معاي تمام فقلت ممكن احد عنده هالطريقة ويضعها بشكل مفصل
اقتباسusing System.Data.SqlClient;protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["testConnectionString"].ToString()); // replace it with your own connection string
using (con)
{
SqlCommand cmd = new SqlCommand(@"BULK INSERT OrdersBulk from 'c:\file.csv' WITH ( FIELDTERMINATOR = '\t',ROWTERMINATOR = '\t\n') ", con);
con.Open();
cmd.ExecuteNonQuery();
}
}
وكل عام وانت بخير
تم تعديل هذه المشاركة بواسطة AhmadASG في 31 أغسطس 2008 في 19:57
طيب ما الخطأ الذي ظهر معك باستخدام bulk ؟ وهل البيانات به نص عربي ؟
TareqVB كتب:طيب ما الخطأ الذي ظهر معك باستخدام bulk ؟ وهل البيانات به نص عربي ؟
اولا مشكور على اهتمامك بالموضوع ومتابعتك له
بخصوص الملف لا يحتوي على كلام عربي ... اول سطر فيه وصف بالانجليزي وباقي الملف ارقام
الخطا هو
The bulk load failed. The column is too long in the data file for row 1, column 1. Verify that the field terminator and row terminator are specified correctly.
The OLE DB provider "BULK" for linked server "(null)" reported an error. The provider did not give any information about the error.
Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".
في السطر
cmd.ExecuteNonQuery();
مع العلم اني اضفت خليه باسم bulk ... اعتقد الخطا بسيط لكني مبتدا عشان كذا ماعرفت احلها
وجزاك الله خير
بما ان اول سطر يحتوي على وصف عليك باضافة الخيار FirstRow=2 كمايلي
[color= #0000FF;]BULK [color= #0000FF;]INSERT OrdersBulk
[color= #0000FF;]FROM [color= #FF0000;]'c:[color= #000099; font-weight: bold;]file.csv'
[color= #0000FF;]WITH
[color= #808080;](
FIRSTROW [color= #808080;]= [color= #000;]2,
FIELDTERM[color= #808080;]INAT[color= #808080;]OR [color= #808080;]= [color= #FF0000;]',',
ROWTERM[color= #808080;]INAT[color= #808080;]OR [color= #808080;]= [color= #FF0000;]'[color= #000099; font-weight: bold;]n'
[color= #808080;])وانتبه ايضا الى FIELDTERMINATOR وهو الفاصل بين الحقول فهل هو عندك فاصلة ام TAB , بالتالي عليك بوضع فاصلة او الرمز \t ليشير الى Tab
وايضا يجب ان يطابق عدد حقول الملف حقول الجدول بشكل
وارجو ان تجرب في Management studio والتأكد من صحة الامر وبعد ذلك انتقل الى البرمجة
TareqVB كتب:بما ان اول سطر يحتوي على وصف عليك باضافة الخيار FirstRow=2 كمايلي
BULK INSERT OrdersBulk FROM 'c:file.csv' WITH ( FIRSTROW = 2, FIELDTERMINATOR = ',', ROWTERMINATOR = 'n' )وانتبه ايضا الى FIELDTERMINATOR وهو الفاصل بين الحقول فهل هو عندك فاصلة ام TAB , بالتالي عليك بوضع فاصلة او الرمز \t ليشير الى Tab
وايضا يجب ان يطابق عدد حقول الملف حقول الجدول بشكل
وارجو ان تجرب في Management studio والتأكد من صحة الامر وبعد ذلك انتقل الى البرمجة
يعطيك العافيه ماقصرت
انا استخدم Visual Studio 2008 مباشره وعامل صفحة لتجارب قبل ما اطبق (مبتدا في البرمجه :wacko: ) ... اعتقد المشكلة اللي كانت تواجهني ان عدد حقول الملف لا يساوي عدد حقول الجدول اللي في قاعدة البيانات
وجاري التجربه
SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
اتمنى انة يكون المطلوب
لو اردت حل سيكوال مش برمجه يوجد فى حاله انك لم تعرف حل للمشكله حتى الان
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…