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

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

بدأه Mejo Magic في 30 يناير 2012 · 17 رد · 932 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخوان انا عندي برنامج يقرا من ملف تكست ويستخرج منه الداتا ويضعها في الداتا بيس

المشكلة هو ان عندي انا بملف قاعدة البيانات 200 عمود

اما السجلات راح تكون بملف التكست وعددها تقريباً 400000

يوجد بطئ شديد في حالة ادخال البيانات لقاعدة البيانات بحيث البرنامج ياخذ تقرييباً ساعتين ونص لجل حفظ البيانات بالداتابيس

مع العلم اني استخدم مايكروسوفت اكسس

بينما في برنامج مصمم لكن لغة foxPro يقوم بنفس العمل لكن بأقل وقت بكثير

انا برنامجي ياخذ ساعتين والفوكس برو ياخذ تقريباً نص ساعة

هذا الكود تبعي واتمنى بالاخوان افادتي في تعديل او اي اضافة تساعد في سرعة البرنامج

 myCom.CommandText = "INSERT INTO MasterDB (ORGX,ACCT,LOGO,SHRTNAME,CUSNO,ALTCUSFLG,ALTCUSNO,ACCTTYP,INTSTAT,CHOFFSTAT,CONDOFACCT,BLKCODE,BLKCODE2,CRDUSGFLG,AUTHSTAT,BILLCYC,STMTFRQ,SIORG,SINO,OWNBANKNO,OWNBRNO,OLCRESON,OWNERFLG,EMPCODE,DTAPPLI,DTOPND,DTBUREAU,DTBLKCODE,DTBLKCODE2,DTLSTCHNG,DTLSTDLQ,DTCLOSED,DTCGOFF,DTLSTPUR,MAKERDOB,COMKERDOB,CBCRSCORE,APPLCRSCOR,CRLIM,HIBAL,INCOME,NOUNCLKED,PMTCYCDUE,PMTCURDUE,PMTPASTCTR,PMTPASTDUE,PMT30DCTR,PMT30DYS,PMT60DCTR,PMT60DYS,PMT90DCTR,PMT90DYS,PMT120DCTR,PMT120DYS,PMT150DCTR,PMT150DYS,PMT180DCTR,PMT180DYS,PMT210DCTR,PMT210DYS,CURRBAL,OPNTOBUY,AMTYTDPUR,AMTYTDCASH,AMTYTDRETN,AMTYTDPMT,AMTCGOFF,CASHCGOFF,CHGOFFRSN1,CHGOFFRSN2,APSORG,APSTYPE,APSACCT,CASHBAL,CASHCRLMT,SECUR,CLLTRL,GRCDEXPDT,RELNO,CUSTORG,DTCRDEXP,PMTOTAMTDU,DTPMTDUE,AMTCTDPUR,PMTLSTAMT,DTLSTPMT,DTLSTSTMT,DTNXTSTMT,AGGRDYS,CRCLASS,WAIVCRDFEE,OWNRELFLG,PRFRPROMDT,PAYRMTMETD,PREVPMTMET,NORTNPMTS,RELBILLLVL,RELNOCRDFE,VIPSTAT,CORPIDNO,COMMRCLFLG,USRMSG1IND,USRMSG2IND,USRMSG3IND,DDPMTRCNTR,PMTCHNGDT,DDACTLPMT,DDAACNO,DDARTNGNO,SAVACNO,MKERHOMTEL,MKEREMPTEL,FXDPMTAMT,XFRACCT,DTCRDFEE,DTCRLIM,ORIGBRNO,DTLASTACT,DTLASTMAIN,PMTDLQDYS,USERCODE1,DTLSRACCR,NOYTDPUR,NOYTDCASH,YTDBILLINT,AMTYTDLCHG,USEACNO,FISCORE,FICRLIMSOR,PMTCTD,YTDCRDISFE,USRCODE2,USRCODE3,USRCODE4,USRDATE2,USRDATE3,USRDATE4,STATERESID,PREVBAL,NASTAT,DTMAINTN,DTADRCHNG,NASSANFLG,NASSANM,NAHTEL,NATELFLG,NAEMPTEL,NAPSTLCD,NAOWNRRESI,NALANGIND,NAMAILLIST,NANODEPEND,NMETYPIND1,NMETYPIND2,NMETYPIND3,NAMELINE1,NAMELINE2,NAMELINE3,NAADDR1,NAADDR2,NACITY,NASTATE,NATITLE,NACNTRYCD,NAPOSITN,NAMARITL,NADOB,NADLCNTRY,NADLSTATE,NAEMAIL,NASSANFLGC,NASSANC,NAHTELC,NATELFLGC,NAEMPTELC,NANMETYP1C,NANELIN1C,NADOBC,NAVIPSTAT,NASICCODE,NADUPCRNCY,NASTMTMSGM,NASTMTMSGC,NAEMPLOYER,NAUSRDO1,NAUSRDO2,NAUSER1,NAUSER2,NAUSER3,NAUSER4,NAUSER13,NAMOBILPH,D2NAEMAIL,FSEARNED,FSDISB,FSADJ,FSPGMBAL,FSBEGBAL,DTEXTR,DELMTR) VALUES (ORGX,@ACCT,@LOGO,@SHRTNAME,@CUSNO,@ALTCUSFLG,@ALTCUSNO,@ACCTTYP,@INTSTAT,@CHOFFSTAT,@CONDOFACCT,@BLKCODE,@BLKCODE2,@CRDUSGFLG,@AUTHSTAT,@BILLCYC,@STMTFRQ,@SIORG,@SINO,@OWNBANKNO,@OWNBRNO,@OLCRESON,@OWNERFLG,@EMPCODE,@DTAPPLI,@DTOPND,@DTBUREAU,@DTBLKCODE,@DTBLKCODE2,@DTLSTCHNG,@DTLSTDLQ,@DTCLOSED,@DTCGOFF,@DTLSTPUR,@MAKERDOB,@COMKERDOB,@CBCRSCORE,@APPLCRSCOR,@CRLIM,@HIBAL,@INCOME,@NOUNCLKED,@PMTCYCDUE,@PMTCURDUE,@PMTPASTCTR,@PMTPASTDUE,@PMT30DCTR,@PMT30DYS,@PMT60DCTR,@PMT60DYS,@PMT90DCTR,@PMT90DYS,@PMT120DCTR,@PMT120DYS,@PMT150DCTR,@PMT150DYS,@PMT180DCTR,@PMT180DYS,@PMT210DCTR,@PMT210DYS,@CURRBAL,@OPNTOBUY,@AMTYTDPUR,@AMTYTDCASH,@AMTYTDRETN,@AMTYTDPMT,@AMTCGOFF,@CASHCGOFF,@CHGOFFRSN1,@CHGOFFRSN2,@APSORG,@APSTYPE,@APSACCT,@CASHBAL,@CASHCRLMT,@SECUR,@CLLTRL,@GRCDEXPDT,@RELNO,@CUSTORG,@DTCRDEXP,@PMTOTAMTDU,@DTPMTDUE,@AMTCTDPUR,@PMTLSTAMT,@DTLSTPMT,@DTLSTSTMT,@DTNXTSTMT,@AGGRDYS,@CRCLASS,@WAIVCRDFEE,@OWNRELFLG,@PRFRPROMDT,@PAYRMTMETD,@PREVPMTMET,@NORTNPMTS,@RELBILLLVL,@RELNOCRDFE,@VIPSTAT,@CORPIDNO,@COMMRCLFLG,@USRMSG1IND,@USRMSG2IND,@USRMSG3IND,@DDPMTRCNTR,@PMTCHNGDT,@DDACTLPMT,@DDAACNO,@DDARTNGNO,@SAVACNO,@MKERHOMTEL,@MKEREMPTEL,@FXDPMTAMT,@XFRACCT,@DTCRDFEE,@DTCRLIM,@ORIGBRNO,@DTLASTACT,@DTLASTMAIN,@PMTDLQDYS,@USERCODE1,@DTLSRACCR,@NOYTDPUR,@NOYTDCASH,@YTDBILLINT,@AMTYTDLCHG,@USEACNO,@FISCORE,@FICRLIMSOR,@PMTCTD,@YTDCRDISFE,@USRCODE2,@USRCODE3,@USRCODE4,@USRDATE2,@USRDATE3,@USRDATE4,@STATERESID,@PREVBAL,@NASTAT,@DTMAINTN,@DTADRCHNG,@NASSANFLG,@NASSANM,@NAHTEL,@NATELFLG,@NAEMPTEL,@NAPSTLCD,@NAOWNRRESI,@NALANGIND,@NAMAILLIST,@NANODEPEND,@NMETYPIND1,@NMETYPIND2,@NMETYPIND3,@NAMELINE1,@NAMELINE2,@NAMELINE3,@NAADDR1,@NAADDR2,@NACITY,@NASTATE,@NATITLE,@NACNTRYCD,@NAPOSITN,@NAMARITL,@NADOB,@NADLCNTRY,@NADLSTATE,@NAEMAIL,@NASSANFLGC,@NASSANC,@NAHTELC,@NATELFLGC,@NAEMPTELC,@NANMETYP1C,@NANELIN1C,@NADOBC,@NAVIPSTAT,@NASICCODE,@NADUPCRNCY,@NASTMTMSGM,@NASTMTMSGC,@NAEMPLOYER,@NAUSRDO1,@NAUSRDO2,@NAUSER1,@NAUSER2,@NAUSER3,@NAUSER4,@NAUSER13,@NAMOBILPH,@D2NAEMAIL,@FSEARNED,@FSDISB,@FSADJ,@FSPGMBAL,@FSBEGBAL,@DTEXTR,@DELMTR)";

            try //catch any error if it shown
            {
                myCon.Open();
                string start = DateTime.Now.Hour + ":" + DateTime.Now.Minute + ":" + DateTime.Now.Second;

                while ((input = sReader.ReadLine()) != null) //Extract the data from the file line by line by its index.
                {

                    ORGX = input.Substring(0, 3);
                    ACCT = input.Substring(3, 19);
                    LOGO = input.Substring(22, 3);
                    SHRTNAME = input.Substring(25, 20);
                    CUSNO = input.Substring(45, 19);
                    ALTCUSFLG = input.Substring(64, 1);
                    ALTCUSNO = input.Substring(65, 19);
                    ACCTTYP = input.Substring(84, 1);
                    INTSTAT = input.Substring(85, 1);
                    CHOFFSTAT = input.Substring(86, 1);
                    CONDOFACCT = input.Substring(87, 1);
                    BLKCODE = input.Substring(88, 1);
                    BLKCODE2 = input.Substring(89, 1);
                    CRDUSGFLG = input.Substring(90, 1);
                    AUTHSTAT = input.Substring(91, 1);
                    BILLCYC = input.Substring(92, 2);
                    STMTFRQ = input.Substring(94, 2);
                    SIORG = input.Substring(96, 3);
                    SINO = input.Substring(99, 9);
                    OWNBANKNO = input.Substring(108, 5);
                    OWNBRNO = input.Substring(113, 9);
                    OLCRESON = input.Substring(122, 2);
                    OWNERFLG = input.Substring(124, 1);
                    EMPCODE = input.Substring(125, 2);
                    DTAPPLI = input.Substring(127, 8);
                    DTOPND = input.Substring(135, 8);
                    DTBUREAU = input.Substring(143, 8);
                    DTBLKCODE = input.Substring(151, 8);
                    DTBLKCODE2 = input.Substring(159, 8);
                    DTLSTCHNG = input.Substring(167, 8);
                    DTLSTDLQ = input.Substring(175, 8);
                    DTCLOSED = input.Substring(183, 8);
                    DTCGOFF = input.Substring(191, 8);
                    DTLSTPUR = input.Substring(199, 8);

 myCom.Parameters.Clear(); //clear the parameters for the next trip.

                    //add the value into the prameter and send it to the database.

                    myCom.Parameters.AddWithValue("@ORGX  ", ORGX.Trim());
                    myCom.Parameters.AddWithValue("@ACCT  ", ACCT.Trim());
                    myCom.Parameters.AddWithValue("@LOGO  ", LOGO.Trim());
                    myCom.Parameters.AddWithValue("@SHRTNAME  ", SHRTNAME.Trim());
                    myCom.Parameters.AddWithValue("@CUSNO  ", CUSNO.Trim());
                    myCom.Parameters.AddWithValue("@ALTCUSFLG  ", ALTCUSFLG.Trim());
                    myCom.Parameters.AddWithValue("@ALTCUSNO  ", ALTCUSNO.Trim());
                    myCom.Parameters.AddWithValue("@ACCTTYP  ", ACCTTYP.Trim());
                    myCom.Parameters.AddWithValue("@INTSTAT  ", INTSTAT.Trim());
                    myCom.Parameters.AddWithValue("@CHOFFSTAT  ", CHOFFSTAT.Trim());
                    myCom.Parameters.AddWithValue("@CONDOFACCT  ", CONDOFACCT.Trim());
                    myCom.Parameters.AddWithValue("@BLKCODE  ", BLKCODE.Trim());
                    myCom.Parameters.AddWithValue("@BLKCODE2  ", BLKCODE2.Trim());
                    myCom.Parameters.AddWithValue("@CRDUSGFLG  ", CRDUSGFLG.Trim());
                    myCom.Parameters.AddWithValue("@AUTHSTAT  ", AUTHSTAT.Trim());
                    myCom.Parameters.AddWithValue("@BILLCYC  ", BILLCYC.Trim());
                    myCom.Parameters.AddWithValue("@STMTFRQ  ", STMTFRQ.Trim());
                    myCom.Parameters.AddWithValue("@SIORG  ", SIORG.Trim());
                    myCom.Parameters.AddWithValue("@SINO  ", SINO.Trim());
                    myCom.Parameters.AddWithValue("@OWNBANKNO  ", OWNBANKNO.Trim());
                    myCom.Parameters.AddWithValue("@OWNBRNO  ", OWNBRNO.Trim());
                    myCom.Parameters.AddWithValue("@OLCRESON  ", OLCRESON.Trim());
                    myCom.Parameters.AddWithValue("@OWNERFLG  ", OWNERFLG.Trim());
                    myCom.Parameters.AddWithValue("@EMPCODE  ", EMPCODE.Trim());
                    myCom.Parameters.AddWithValue("@DTAPPLI  ", DTAPPLI.Trim());
                    myCom.Parameters.AddWithValue("@DTOPND  ", DTOPND.Trim());
                    myCom.Parameters.AddWithValue("@DTBUREAU  ", DTBUREAU.Trim());
                    myCom.Parameters.AddWithValue("@DTBLKCODE  ", DTBLKCODE.Trim());
                    myCom.Parameters.AddWithValue("@DTBLKCODE2  ", DTBLKCODE2.Trim());
                    myCom.Parameters.AddWithValue("@DTLSTCHNG  ", DTLSTCHNG.Trim());
                    myCom.Parameters.AddWithValue("@DTLSTDLQ  ", DTLSTDLQ.Trim());
                    myCom.Parameters.AddWithValue("@DTCLOSED  ", DTCLOSED.Trim());
                    myCom.Parameters.AddWithValue("@DTCGOFF  ", DTCGOFF.Trim());
                    myCom.Parameters.AddWithValue("@DTLSTPUR  ", DTLSTPUR.Trim());

       count++;
                    myCom.ExecuteNonQuery(); //Insert data to the database
                    lblcount.Text = "copy record No. " + count;
                }
                MessageBox.Show("There are " + count + " record inserted.", "Information Message",MessageBoxButtons.OK,MessageBoxIcon.Information);

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

ومشكورين مقدماً

تم تعديل هذه المشاركة بواسطة Mejo Magic في 30 يناير 2012 في 11:45

#2

السلام عليكم,

لقد أرفقت لك أسرع طريقة على الوجود ولكن ليس باستخدام ADO.NET بل باستخدام DAO

الطريقة سريعة جدا جدا ولكن عليك أن تكون حذرا عند استخدامها

هذا هو الجزء المهم من الكود

using System;
using System.Collections.Generic;
using System.Text;
using ACCESS = Microsoft.Office.Interop.Access; // USED ONLY FOR THE TEXT FILE METHOD
using DAO = Microsoft.Office.Interop.Access.Dao; // USED ONLY FOR THE DAO METHOD
using System.Data; // USED ONLY FOR THE ADO.NET/DataTable METHOD
using System.Data.OleDb; // USED FOR BOTH ADO.NET METHODS
using System.IO;  // USED ONLY FOR THE TEXT FILE METHOD
using System.Windows.Forms;

 public static void TestDAOTransferToAccess()
        {
            const string AccessDB = "d:\\text.accdb";
            const string DbTableName = "TestTable";
            DAO.DBEngine dbEngine = new DAO.DBEngine();
            DAO.Database db = dbEngine.OpenDatabase(AccessDB);
            DAO.Recordset rs = db.OpenRecordset(DbTableName);

            Dictionary<string, DAO.Field> myFields = new Dictionary<string, DAO.Field>();
            foreach (DAO.Field item in rs.Fields) myFields.Add(item.Name, item);
            string input = "";
            while (true)//replace this line with while ((input = sReader.ReadLine()) != null)
            {
                rs.AddNew();

                myFields["ORGX"].Value = input.Substring(0, 3);
                myFields["ACCT"].Value = input.Substring(3, 19);
                myFields["LOGO"].Value = input.Substring(22, 3);
                //قم باكمال جميع الاعمدة المطلوب ادخالها

                rs.Update();
            }
            rs.Close();
            db.Close();
        }

لقراءة المزيد عن هذه التقنية يرجى مراجعة الموقع http://stackoverflow.com/questions/7070011/writing-large-number-of-records-bulk-insert-to-access-in-net-c

بالتوفيق ان شاء الله

TestOLEDB.rar

قولوا لا اله الا الله تفلحوا

ومن يبتغي غير الاسلام دينا فلن يقبل منه وهو في الاخرة من الخاسرين- صدق الله العظيم

#3

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

اولا اعتقد انها مشكلة في تقسيم النص الي حقول ما ياخذ وقت

ثانيا اسلوب الكتابة في قاعدة البيانات

#4
akramKamal كتب:

السلام عليكم,

لقد أرفقت لك أسرع طريقة على الوجود ولكن ليس باستخدام ADO.NET بل باستخدام DAO

الطريقة سريعة جدا جدا ولكن عليك أن تكون حذرا عند استخدامها

هذا هو الجزء المهم من الكود

using System;
using System.Collections.Generic;
using System.Text;
using ACCESS = Microsoft.Office.Interop.Access; // USED ONLY FOR THE TEXT FILE METHOD
using DAO = Microsoft.Office.Interop.Access.Dao; // USED ONLY FOR THE DAO METHOD
using System.Data; // USED ONLY FOR THE ADO.NET/DataTable METHOD
using System.Data.OleDb; // USED FOR BOTH ADO.NET METHODS
using System.IO;  // USED ONLY FOR THE TEXT FILE METHOD
using System.Windows.Forms;

 public static void TestDAOTransferToAccess()
        {
            const string AccessDB = "d:\\text.accdb";
            const string DbTableName = "TestTable";
            DAO.DBEngine dbEngine = new DAO.DBEngine();
            DAO.Database db = dbEngine.OpenDatabase(AccessDB);
            DAO.Recordset rs = db.OpenRecordset(DbTableName);

            Dictionary<string, DAO.Field> myFields = new Dictionary<string, DAO.Field>();
            foreach (DAO.Field item in rs.Fields) myFields.Add(item.Name, item);
            string input = "";
            while (true)//replace this line with while ((input = sReader.ReadLine()) != null)
            {
                rs.AddNew();

                myFields["ORGX"].Value = input.Substring(0, 3);
                myFields["ACCT"].Value = input.Substring(3, 19);
                myFields["LOGO"].Value = input.Substring(22, 3);
                //قم باكمال جميع الاعمدة المطلوب ادخالها

                rs.Update();
            }
            rs.Close();
            db.Close();
        }

لقراءة المزيد عن هذه التقنية يرجى مراجعة الموقع http://stackoverflow.com/questions/7070011/writing-large-number-of-records-bulk-insert-to-access-in-net-c

بالتوفيق ان شاء الله

شكوووور اخوي على تجاوبك مع الموضوع وكودك يالغالي

بس فيه مشكله لمى حطيت باقي البيانات طلع خطا في البرنامج

DAO.Database db = dbEngine.OpenDatabase(AccessDB);

الخطأ Error 1 No overload for method 'OpenDatabase' takes '1' arguments C:\Users\5512013\Downloads\TestOLEDB\Form1.cs 25 31 TestOLEDB

الثاني

DAO.Recordset rs = db.OpenRecordset(DbTableName);

الخطا Error 2 No overload for method 'OpenRecordset' takes '1' arguments C:\Users\5512013\Downloads\TestOLEDB\Form1.cs 26 32 TestOLEDB

الثالث

rs.Update();

Error 3 No overload for method 'Update' takes '0' arguments C:\Users\5512013\Downloads\TestOLEDB\Form1.cs 241 17 TestOLEDB

اتمنى القى الحل لجل اجرب كودك على DAO

يعطيك ربي الف عافية

#5

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

قولوا لا اله الا الله تفلحوا

ومن يبتغي غير الاسلام دينا فلن يقبل منه وهو في الاخرة من الخاسرين- صدق الله العظيم

#6

look to the application

AppReadFile.rar

#7
KARIMSOFT كتب:

look to the application

أرفق الملف النصي الذي قرات منه

لكن هل انت متاكد أن الداتا ست لا تأخذ وقتا طويلا وذلك لانها تستخدم ADO.NET أيضا

أرجو أن يكون الملف النصي به 400000 سطر أو اكثر حتى نستطيع ايجاد الفرق بين الطريقتين

شكرا

قولوا لا اله الا الله تفلحوا

ومن يبتغي غير الاسلام دينا فلن يقبل منه وهو في الاخرة من الخاسرين- صدق الله العظيم

#8
akramKamal كتب:

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

نشالله الكود تبعك مافيه مشكله ولو تلاحظ الاخطاء اللي كتبتها ماهي اخطاء برمجية لكن سنتاكس. اللي ناقصني هو اللي مابين الاقواس

في اكثر من متغير بالاخطاء ياخذ اكثر من one arguments وانا ماني عارف اي بالضبط طالب

وتخلصة من المشكله عن طريق

DAO.Database db = dbEngine.OpenDatabase(@"D:\\MasterDBFinalFix.mdb", false, false,"");
            DAO.Recordset rs = db.OpenRecordset("vpMaterTable", false, false,"");

فاضل بس الخطأ الاخير تبع rs.Update();

مشكووور اخوي واتمنى القى منك رد قريب

akramKamal كتب:

أرفق الملف النصي الذي قرات منه

لكن هل انت متاكد أن الداتا ست لا تأخذ وقتا طويلا وذلك لانها تستخدم ADO.NET أيضا

أرجو أن يكون الملف النصي به 400000 سطر أو اكثر حتى نستطيع ايجاد الفرق بين الطريقتين

شكرا

للاسف اخوي شفلة الملف تبعك بس مو راضي ينقل البيانات والملف لو برسله جمه مرره كبيير :(

انا ماعندي مشكلة بالبيانات اقدر اضعها بالقاعده لكن سرعة التحميل هنا هي المشكله اللي مالقيت لها حل

اتمنى من الاخوان اذا كان يعرف معلومة عن الـ Do_cmdTransfer اعتقد هي الحل اللي راح يساعدي بمشروعي واتخرج وافتك :cool:

على العموم اخواني لاتحرمونا من تجاوبكم والله يوفق الجميع

تم تعديل هذه المشاركة بواسطة Mejo Magic في 1 فبراير 2012 في 10:01

#9

المشروع المرفق بالاعلي ياخذ دقيقة ونصف في حفظ الملف من 50000

نصيحة من استخدمي قاعدة بيانات sql server

#10
KARIMSOFT كتب:

المشروع المرفق بالاعلي ياخذ دقيقة ونصف في حفظ الملف من 50000

نصيحة من استخدمي قاعدة بيانات sql server

اذا كان بياخذ 50000 بـ دقيقه ونص هذا شي ممتاااز

ارجو انك تزودني بالكود الصحيح لاني جربت انا المشروع ومامشى معي

وزي ماقلت اذا 50 الف سطر خلصها بـ بدقيق ونص راح يكون شي مرره ممتاز

انتظرك

#11

انظر المرفق واتبع الخطوات في العرض

Presentation1.rar

#12
KARIMSOFT كتب:

انظر المرفق واتبع الخطوات في العرض

شكووور اخوي على شرحك الكافي والوافي

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

بحيث ان برنامج نسخ لي 100.000 سطر بـ 40 دقيقة واللي اعتقد ماتختلف عن المده اللي كتبتها انا بالبرنامج اخوي :(

اخوي اذا عندك اي معلومية تفيدني بـ DAO او BulkCopy ممكن تساعدني

تحياتي لك

#13
Mejo Magic كتب:

شكووور اخوي على شرحك الكافي والوافي

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

بحيث ان برنامج نسخ لي 100.000 سطر بـ 40 دقيقة واللي اعتقد ماتختلف عن المده اللي كتبتها انا بالبرنامج اخوي :(

اخوي اذا عندك اي معلومية تفيدني بـ DAO او BulkCopy ممكن تساعدني

تحياتي لك

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

ارجو المعذرة على الأسلوب ولكن أظن أنني طلبت أنا وبعض الاخوة هذا الأمر منك أكثر من مرة

تحياتي للجميع

قولوا لا اله الا الله تفلحوا

ومن يبتغي غير الاسلام دينا فلن يقبل منه وهو في الاخرة من الخاسرين- صدق الله العظيم

#14

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

علي العموم الاكسس غير مصمم لها العدد من السجلات لان اقصي مساحة 2 جيجا

نصيحة من استخدمي قاعدة بيانات sql server

BulkCopy خاص بالsql server

#15
KARIMSOFT كتب:

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

علي العموم الاكسس غير مصمم لها العدد من السجلات لان اقصي مساحة 2 جيجا

نصيحة من استخدمي قاعدة بيانات sql server

BulkCopy خاص بالsql server

ممكن نقول كذا اخوي وممكن نقول ضعف من لفة C#

انا الحمدالله لقيت الحل وقدرة انسخ 400000 سجل للداتا بيس بحدود 25 دقيقه وكل شي تمام

لكن مو بالـ C# لاني راح استخدم تقنية الـ DAO المختصة بقواعد البيانات للاكسس

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

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

بس برضو اشوف انو بعد 25 دقيقه كثير لاني ذكرت ان الفوكس برو يخلص بـ 10 دقايق

على العموم اخوي يعطيك الف الف عافية على تجوابك معي بالموضوع اللي ساعدني كثير

تحياتي

#17
الفريد كتب:

مشكور اخوي الفريد الموضوع ممتاز واستفدة منه اشياء جديده بخصوص ال vb

لكن بخصوص الداتا بيس انا اقتنعة تماماً بـ DAO

اشكر الاخ akramKamal على التنويه على هذي التقنية

#18

انظر المرفق ينقل 400000 في 9 دقائق

AccessBulkCopy.rar

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

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

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

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

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