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

مساعدة في Insert

بدأه ananabha في 13 سبتمبر 2009 · 4 رد · 443 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

عندي موقع يقوم فيه المستخدم برفع ملف نصي TXT هذا الملف يحتوي على عدد كبير جدا من الايميلات يفصل بين كل ايميل والاخر علامة Comma ,

المطلوب هو ادخال كل ايميل من هذه الايميلات في قاعدة البيانات SQl

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

ولكن مشكلتي هي ان عدد الصفوف المراد ادخالها الى جدول الداتا بيس كبير جدا ممكن تتجاوز 2000 ايميل

وطبعا عندما اضغط زر الادخال تستمر العملية وقت طويل جدا وفي النهاية تظهر رسالة انتهاء الوقت

TimeOut Expired

جربت ازيد الوقت الخاص بجدول الداتا بيس الى القيمة القصوى له وهو 65535 ثانية

SqlServer ---Tools ---Options ---Designers

وايضا تظهر رسالة TimeOut Expired

هل ممكن مثلا ان اقوم بتقسيم عملية الادخال بحيث مثلا يأخذ اول 50 صف ويدخلهم ثم ينتقل الى ال50 اللي بعدهم وهكذا

حتى يتم ادخال كافة ال 2000 صف أو أكثر

أم ما هو الحل لمثل هذه المشكلة ( ادخال كمية كبيرة من البيانات في المرة الواحدة )

هذا هو الكود الموجود تحت زر الادخال

==========================================

Dim anan As String

anan = Request.PhysicalApplicationPath

anan += "UserFiles\"

FileUpload1.SaveAs(anan + FileUpload1.FileName.Replace(" ", "-"))

Dim FileLoka As String = "ProductsImages/" & FileUpload1.FileName.Replace(" ", "-")

Dim FILENAME As String = Server.MapPath(FileLoka)

Dim objStreamReader As StreamReader

objStreamReader = File.OpenText(FILENAME)

Dim contents As String = objStreamReader.ReadToEnd()

'lblNicerOutput.Text = contents.Replace(vbCrLf, "<br>")

Dim separator As String() = New String() {"/"}

Dim strSplitArr As String() = contents.ToLower().Replace(" ", "").Replace(",", "").Replace(".com", ".com/").Replace(".net", ".net/").Replace(".org", ".org/").Replace(".uk", ".uk/").Replace(".cc", ".cc/").Split(separator, StringSplitOptions.RemoveEmptyEntries)

conn = New SqlConnection(ConfigurationManager.ConnectionStrings("AfaqDBConnectionString").ConnectionString)

conn.Open()

cmd = New SqlCommand()

cmd.Connection = conn

For Each arrStr As String In strSplitArr

cmd.CommandText = "Insert Into TryBigInsert(Email) Values('" & arrStr & "')"

cmd.ExecuteNonQuery()

Response.Write("<script language='javascript'>alert(' تـم ');</script>")

Next

conn.Close()

objStreamReader.Close()

==============================================================

ارجو المساعدة ... وجزاكم الله خير

تم تعديل هذه المشاركة بواسطة ananabha في 13 سبتمبر 2009 في 20:51

#2

معقول ياجماعة مفيش حل للموضوع ده

ادخال سجلات كتير في الداتا بيس مرة واحدة وتفادي مشكلة timeout

ارجو منكم المساعدة اخواني الكرام

#3

استخدم اخي

الادخال المتعدد

حيث قاعدة البيانات تسمع بذلك

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

تم تعديل هذه المشاركة بواسطة islamicnfo_a في 16 سبتمبر 2009 في 12:08

arab-code-logo.png

---------------------------

ليست المشكلة أن تخطــىء ، حتى لوكان خطئك جسيما

وليست الميزة أن تعترف بالخطـــأ وتتقبل النصح .. إنمـا

العمل الجبــار الذي ينتظرك حقا هو أن لا تعـــــــــــــود

للخطـــــــأ أبــدا ……

#4

ممكن ان تستخدم DataSet لعملية الInsert وهي تقوم بعمل Batch Insert

اللهم ارزقنا فهم النبيين وحفظ المرسلين

Hock341@yahoo.com

الشركة التطبيقية لخدمات الحاسب الالي [حاسب]

http://www.hasib.com.sa

مدونتي

#5

اشكركم اخواني الكرام على الرد والاهتمام

بس ممكن اخي islamicnfo_a

تعطيني مثال على عملية تقسيم البيانات

ولك جزيل الشكر والتحية

تم تعديل هذه المشاركة بواسطة ananabha في 17 سبتمبر 2009 في 05:46

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