السلام عليكم ورحمة الله
لدي ملف 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
أرجو أن أجد حل لهذه المشكلة عندكم ...بانتظار ردكم إخواني وجزاكم الله خير ...