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

كيف استورد بيانات من ملف نصي واخزنه في قاعدة البيانات

بدأه AhmadASG في 27 أغسطس 2008 · 10 رد · 1,984 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

كيف استورد بيانات من ملف نصي (او حتى CSV) واخزنه في قاعدة البيانات SQL او اكسس

وشكراً لكم

#3
TareqVB كتب:
يوجد معالج يقوم بذلك imoprt/export وفي الاكسس ايضا يوجد الاستيراد import

صدقت بس انا كنت ابي حل مبرمجي لاني الاستيراد ليس لمره وحده بل راح يكون بشكل شبه يومي :wacko:

#4

السلام عليكم

لم تذكر انك تريد حل برمجي لكن اعتقد اني رأيت نفس السؤال في قسم السي شارب وارجو ان يكون كذلك لذا انظر الى هذه المقالة لكيفية قراءة الملف النصي من خلال ADO.NET

Connectiong to a text file

والحل التقليدي هو قراءة الملف سطرا سطرا وبعد ذلك تقسيم كل سطر حسب الفاصل بين الحقول وتخزين هذه الاسطر في قاعدة البيانات

لقراءة الملف يوجد snippet لذلك في الدوت نت

ولتقسيم الحقول نستخدم split

#5
TareqVB كتب:
السلام عليكم

لم تذكر انك تريد حل برمجي لكن اعتقد اني رأيت نفس السؤال في قسم السي شارب وارجو ان يكون كذلك لذا انظر الى هذه المقالة لكيفية قراءة الملف النصي من خلال ADO.NET

Connectiong to a text file

والحل التقليدي هو قراءة الملف سطرا سطرا وبعد ذلك تقسيم كل سطر حسب الفاصل بين الحقول وتخزين هذه الاسطر في قاعدة البيانات

لقراءة الملف يوجد 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

#7
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 ... اعتقد الخطا بسيط لكني مبتدا عشان كذا ماعرفت احلها

وجزاك الله خير

#8

بما ان اول سطر يحتوي على وصف عليك باضافة الخيار 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 والتأكد من صحة الامر وبعد ذلك انتقل الى البرمجة

#9
TareqVB كتب:
بما ان اول سطر يحتوي على وصف عليك باضافة الخيار FirstRow=2 كمايلي

  1.  
  2. BULK INSERT OrdersBulk
  3. FROM 'c:file.csv'
  4. WITH
  5. (
  6. FIRSTROW = 2,
  7. FIELDTERMINATOR = ',',
  8. ROWTERMINATOR = 'n'
  9. )
  10.  
  11.  
  12.  
  13.  

وانتبه ايضا الى FIELDTERMINATOR وهو الفاصل بين الحقول فهل هو عندك فاصلة ام TAB , بالتالي عليك بوضع فاصلة او الرمز \t ليشير الى Tab

وايضا يجب ان يطابق عدد حقول الملف حقول الجدول بشكل

وارجو ان تجرب في Management studio والتأكد من صحة الامر وبعد ذلك انتقل الى البرمجة

يعطيك العافيه ماقصرت

انا استخدم Visual Studio 2008 مباشره وعامل صفحة لتجارب قبل ما اطبق (مبتدا في البرمجه :wacko: ) ... اعتقد المشكلة اللي كانت تواجهني ان عدد حقول الملف لا يساوي عدد حقول الجدول اللي في قاعدة البيانات

وجاري التجربه

#11

لو اردت حل سيكوال مش برمجه يوجد فى حاله انك لم تعرف حل للمشكله حتى الان

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…