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

أرجو المساعدة بخصوص تكرار القراءة من ملف Txt

بدأه ananabha في 12 يناير 2010 · 1 رد · 584 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

لدي ملف txt يحتوي على عدد كبير جدا من الايميلات ممكن يصل الى 3000 أو اكثر

أريد ان أقوم بقراءة الايميلات الموجودة به وادخالها الى قاعدة البيانات ( مع ملاحظة أن كل ايميل والاخر يفصل بينهما علامة comma ,

بحثت كثيرا عن موضوع ادخال كمية كبيرة من الصفوف الى قاعدة البيانات ووجدت أن أفضل طريقة هي شيئ يسمى BulkInsert

وهذا هو الرابط الخاص به لمن يريد الاطلاع عليه

http://www.dotnetcurry.com/ShowArticle.aspx?ID=323&AspxAutoDetectCookieSupport=1

المهم ... الكود الذي استخدمته للقراءة من داخل ملف التكست واجراء عملية التكرار هو الكود التالي

 Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim dt As New DataTable()

Dim line As String = Nothing

Dim i As Integer = 0

Using sr As StreamReader = File.OpenText("c:\001.txt")

line = sr.ReadLine()

Do While line IsNot Nothing

Dim data() As String = line.Split(","c)

If data.Length > 0 Then

If i = 0 Then

For Each item As String In data

dt.Columns.Add(New DataColumn())

Next item

i += 1

End If

Dim row As DataRow = dt.NewRow()

row.ItemArray = data

dt.Rows.Add(row)

End If

line = sr.ReadLine()

Loop

End Using

Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings("AfaqDBConnectionString").ConnectionString)

cn.Open()

Using copy As New SqlBulkCopy(cn)

copy.ColumnMappings.Add(0, 1)

copy.DestinationTableName = "TryBigInsert"

copy.WriteToServer(dt)

End Using

End Using

GridView1.DataBind()

End Sub

المشكلة التي تحدث هو أنه اذا كان السطر الواحد (داخل الملف النصي) يحتوي على اكثر من ايميل فانه يتم قراءة أول ايميل فقط وباقي الايميلات الموجودة في نقس السطر لا يتم قراءتها أعتقد أن المشكلة في جملة التكرار الخاصة بــ WHILE

أرجو أن أجد حل لهذه المشكلة عندكم ...بانتظار ردكم إخواني وجزاكم الله خير ...

#2

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

يا أخ ananabha لماذا تقراء الملف سطر بسطر

لماذا لا تقراءة كاملا جملة واحده وبعدين تخزن النتيجة في string وبعد ذلك تستخدم دالة string.Split الي راح تحولها إلى string[] وبعد ذلك تقوم بعمل loop للـ string[]، كما في المثال التالي

string content = string.Empty;
            using (System.IO.StreamReader sr = new System.IO.StreamReader(your_file_path))
            {
                content = sr.ReadToEnd();
            }

            string[] emails = content.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
            foreach (string email in emails)
            {
                // Do your things here
            }

انا آسف لأنه الكود بلغة CSharp

اتمنى لك التوفيق وبرمجة سعيدة

1

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

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

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

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

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