تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] قراءة ملف نصى
#1
لدى ملف نصى كبير يستخدم كقاعدة بيانات
يحتوى على 15000 سجل
كل بيان مكون من 2200 حرف تنقسم الى 25 حقل كل حقل 100 او 50 حرف

اريد اسرع طريقة لقراءة هذا الملف الى datatable
الرد }}}
تم الشكر بواسطة:
#2
من جد تتكلم .....
ملف نصي ؟؟؟؟؟؟ كقاعدة بيانات ؟؟؟؟ 15000 سجل ؟؟؟؟؟؟ 
وتريد تسريع عملية القراءة ؟؟؟؟؟

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

لماذا هذا كلة ؟ 

مفروض نجيبك على كرسي الإعتراف ، ونستجوبك .

أنا عن نفسي بحكم عليك بالكرسي الكهربائي .
الرد }}}
#3
إقتباس :من جد تتكلم .....
ملف نصي ؟؟؟؟؟؟ كقاعدة بيانات ؟؟؟؟ 15000 سجل ؟؟؟؟؟؟ 
وتريد تسريع عملية القراءة ؟؟؟؟؟

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

لماذا هذا كلة ؟ 

مفروض نجيبك على كرسي الإعتراف ، ونستجوبك .

أنا عن نفسي بحكم عليك بالكرسي الكهربائي .



أولا شكرا على الاهتمام

لكن المشكلة أنها موجودة بالفعل من برنامج بالفيجوال بيسك 6 
انا فقط اريد استعمالها فى برنامجى

هذه هى المشكلة التى اريد التعامل معها و ليس أنا من يصنعها
الرد }}}
تم الشكر بواسطة:
#4
السلام عليكم 
اقترح عليك 
انك تسحبها مرة واحدة    ثم تحفظها في قاعدة بيانات   وتتعامل معها بدل  الملف النصي 
الرد }}}
تم الشكر بواسطة: عبدالله الدوسري
#5
الملف يتم الاضافة اليه باستمرار
لذلك لابد من التعامل المباشر معه
الرد }}}
تم الشكر بواسطة:
#6
كبداية للرد علي سؤالك
قراءة البيانات من ملف ليس لها علاقة بنوع الملف
المهم في الأمر هو كيفية ترتيب و تنظيم كتابة البيانات للملف
والأفضل لك هو أن تبني كلاس به بعض Property التي تساوي عدد الحقول في كل سطر
وبالتالي سيكون اسهل لك و اسرع ايضا القراءة و الكتابة الي الملف

مثلا في الداتا بيز العادية مثثل الأكسس او SQL تكون الأمور مرتبة قليلا لأنك انت من لا يبني الملف من الصفر
لكن انت فقط تضيف بيانات الي الملف و تقرأ بيانات من الملف

في حالتك هنا انت من عليه أن ينظم و يرتب كيفية كتابة وقراءة البيانات
الكود التالي سيعطيك فكرة مبدئية عن كيفية تحويل الملف الي DataTable


PHP كود :
      Dim fileNameAndPath As String ".\file.text"
 
       Dim lines As String() = IO.File.ReadAllLines(fileNameAndPath)
 
       Dim result As DataTable CType(NothingDataTable)
 
       result = New DataTable With {.Locale System.Globalization.CultureInfo.InvariantCulture}

 
       result.Columns.Add(New DataColumn("Field 1"GetType(String)))
 
       result.Columns.Add(New DataColumn("Field 2"GetType(String)))
 
       result.Columns.Add(New DataColumn("Field 3"GetType(String)))
 
       ' بما أنك لديك 25 حقل أكمل حتي 25 حقل
        ' 
طبعا الافضل لك من الاصل تحفظ البيانات علي هيئة كلاس 
        
' وطبعا هذا سيوفر عليك الجهد و الوقت و سيكون اسرع فس قرءاة البيانات
        SyncLock lines.GetType
            For i As Integer = 0 To lines.Length - 1

                Dim line As String = lines(i)
                ' 
اقسم كل سطر الي 25 حقل
                
' و  للمرة الثانية كان من 
                ' 
الافضل تحويل كل سطر الي كلاس 
                Dim values 
As String() = line.Split(" "c)

 
               Dim field_1 As String values(0)
 
               Dim field_2 As String values(1)
 
               Dim field_3 As String values(3)

 
               result.Rows.Add(New Object() {field_1field_2field_3})
 
           Next
        End SyncLock 
Retired
الرد }}}
#7
أشكرك أخى 

المشكلة أن السجل الواحد به أكثر من سطر 
أنا استخدم Substring لفصل الحقول و لكن يكون التنفيذ بطىء الى حدا ما
الرد }}}
تم الشكر بواسطة:
#8
(08-05-18, 03:42 PM)mrnooo2000 كتب : الملف يتم الاضافة اليه باستمرار
لذلك لابد من التعامل المباشر معه


يجب توضيح بعض الأمور :

1 - هل أنت مجبر على التعامل مع هذا الملف بهذة الهيئة ؟
2 - هل يمكنك تغيير البرنامج الرئيسي الذي يقوم بالإظافة علية ؟
3 - هل الإضافة تتم من برنامج واحد أم ستتم الإضافة من أكثر من برنامج ؟
4 - هل هدفك هو القراءة فقط وفقط القراءة ؟ أم تريد الكتابة أيظاً ؟ يعني تريد عمل Update لبعض السجلات مثلاً !
5 - للتوضيح أكثر : هناك برنامج يعمل بالفعل على هذا الملف النصي لغرض معين . ولا يمكنك تغيير ذلك لأنه نظام قديم ومعتمد حتى هذة اللحظة. وأنت تريد إستغلال هذة البيانات في برنامجك. السؤال هنا للتأكيد : أنت تريد القراءة فقط ؟ صح أم لا ؟
6 - أرفق مثال عن بعض السجلات في هذا الملف النصي .


إذا كنت تريد القراءة فقط , سأذكر لك طريقة ( فكرة ) ولكن بعد أن تجيب على الأسئلة في الأعلى.
الرد }}}
تم الشكر بواسطة: sendbad100
#9
إقتباس :يجب توضيح بعض الأمور :

1 - هل أنت مجبر على التعامل مع هذا الملف بهذة الهيئة ؟
2 - هل يمكنك تغيير البرنامج الرئيسي الذي يقوم بالإظافة علية ؟
3 - هل الإضافة تتم من برنامج واحد أم ستتم الإضافة من أكثر من برنامج ؟
4 - هل هدفك هو القراءة فقط وفقط القراءة ؟ أم تريد الكتابة أيظاً ؟ يعني تريد عمل Update لبعض السجلات مثلاً !
5 - للتوضيح أكثر : هناك برنامج يعمل بالفعل على هذا الملف النصي لغرض معين . ولا يمكنك تغيير ذلك لأنه نظام قديم ومعتمد حتى هذة اللحظة. وأنت تريد إستغلال هذة البيانات في برنامجك. السؤال هنا للتأكيد : أنت تريد القراءة فقط ؟ صح أم لا ؟
6 - أرفق مثال عن بعض السجلات في هذا الملف النصي .

1- نعم 
2 - لا
3- واحد
4- قراءة فقط
5- نعم قراءة فقط


الملفات المرفقة
.txt   Sample.txt (الحجم : 10.88 ك ب / التحميلات : 28)
الرد }}}
تم الشكر بواسطة:
#10
الفكرة كالتالي :
1 - الملف النصي الذي أرفقتة , المفترض أنك تستطيع تحديد الحقول , متى يبداء الحقل  ومتى ينتهي ، بمعنى أنك تستطيع إستخراج البيانات.
2 - تقوم بعمل برنامج مستقل + قاعدة بيانات بأي نوع ، ( اسم البرنامج مثلاً : Data Converter ) ( البرنامج يعمل بدون توقف ) هذا البرنامج مهمة الوحيدة هو إستخراج البيانات من الملف النصي وإدخالها في قاعدة البيانات ، وبعد كل عملية إستخراج للبيانات يتحقق من حجم الملف النصي كل ما يتغير حجم الملف يعني وجود بيانات جديدة ، دتخل في عملية إستخراج للبيانات من جديد ولكن تقوم بإدخال البيانات الجديدة فقط لقاعدة البيانات ، وهكذا ، ويظل البرنامج في عملية تحقق لحجم الملف النصي ، لنفرض كل 5 ثواني ( يتحقق من حجم الملف عملية لا تستغرق أجزاء أجزاء الثانية ) ولكن عند تغير الحجم تدخل في عملية إستخراج للبيانات ويتوقف التحقق من حجم الملف حتى تنتهي من إستخراج البيانات .
3 - الآن من خلال برنامجك أنت تقوم بالإتصال العادي على قاعدة البيانات بكل سهولة وسرعة ولا يؤثر على أداء البرنامج لديك ، لأن من يقوم بالمهمة هو برنامج ( Data Converter ) .
4 - أي معلومات جديدة على الملف النصي لن تظهر في برنامجك حتى يقوم البرنامج ( Data Converter ) بعملة.
5 - تحتاج أي معلومات جديدة للظهور لديك في البرنامج إلى نفس الوقت الازم لقراءة الملف النصي.
أتمنى وصلت الفكرة .

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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] لدي مشكلة عند قراءة ملف نصي من خلال أداة RichBox , حيث تظهر لي علامات استفهام Mostchar 2 153 07-04-24, 02:51 PM
آخر رد: تركي الحلواني
  أستفسار عن قراءة الاسطر altoki939 8 280 07-04-24, 05:36 AM
آخر رد: altoki939
  مشكله فى جهاز قراءة الباركود خالد كامل1 1 358 03-11-23, 06:42 AM
آخر رد: Taha Okla
  [VB.NET] مشكله في قراءة ملصقات الباركود CoderMM 6 1,818 15-03-23, 06:27 PM
آخر رد: المتألق9
  قراءة البريد الالكتروني باستخدام الفيجوال بازيك صبري زينوبي 0 382 24-08-22, 05:47 PM
آخر رد: صبري زينوبي
  قراءة خلية من الداتا قريد بصيغة نص aftfm 0 695 21-08-22, 05:22 AM
آخر رد: aftfm
  قراءة البيانات من برنامج البصمة strongriseman 2 1,318 29-07-22, 02:23 AM
آخر رد: ابراهيم ايبو
Exclamation قراءة بيانات الصورة من قاعدة بيانات أكسس إلى أداة PictureBox أبو خالد الشكري 15 1,857 20-07-22, 05:40 PM
آخر رد: أبو خالد الشكري
  قراءة ملف txt اون لاين لو تكرمتم crazykinko 3 877 11-07-22, 11:53 AM
آخر رد: crazykinko
Lightbulb *○● قراءة نوع البيانات Data Type من قاعدة البيانات ●○* أبو خالد الشكري 10 1,747 29-06-22, 11:51 PM
آخر رد: أبو خالد الشكري

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم