السلام عليكم
كيف ممكن احضر بيانات مخزنة بملف من نوع dat
الى جدول موجود بالاوراكل
و شكرا:)
السلام عليكم
كيف ممكن احضر بيانات مخزنة بملف من نوع dat
الى جدول موجود بالاوراكل
و شكرا:)
ماذا تقصد بكلمة Dat Files? هل تقصد ال Oracle Data Files أم تقصد ملفات محسوسة على جهازك بإمتداد .dat? على العموم، لو كنت تقصد ملفات بيانات الاوراكل Oracle DATA Files فهي تكون متضمنة في ال Tablespace ولا يمكن رؤيتها مفردة، لذا عليك بعملية التصدير أولا وتحويلها ملفات محسوسة، ثم نقل الملف الى الجهاز الذي تريد الاستيراد عليه والقيام بعملية الاستيراد
في البداية شكرا على التعاون
المهم ... انا قصدي انو عندي ملف امتداده dat و بيحتوي على اسطر من البيانات اللتي اريد نقلها الى جدول في الاوراكل
بس مش عارفة الطريقة بالزبط
عموما انا فتت على موقع ask tom
و بحثت فيه و شفت اشياء بس ما فهمتها كتيير و من ضمنها اشي اسمو
sqlloader
ما باعرف شو هو و كيف بيستخدم
ارجو الافادة
و شكرا
أولا وقبل كل شيء أختي، آسف على مخاطبتك بضمير المذكر :P
بس كمان ما شرحتي ايه هي هيئة ملف المصدر، هل هو أسكي ASCI أم ماذا. يبدو لي من طرحك انك تقصدي تحميل ملفات الاسكي على القاعدة، وهو موضوع قمت زماااااان بشرحه، بس ما متاكد ما إذا كان موجود على قاعدة بيانات الم لأ، على العموم فال SQL LOADER هي احدى أدوات الاوراكل التي تقوم بقراءة الملفات وتحميلها في قاعدة البيانات. أرجو ان تضعي هيئة الملف، واسم وتفصيل ملف البيانات لديك في قاعدة البيانات حتى اقوم بإتخاذه كمثال للشرح، وأعتقد ان من الافضل ان ترسلي الملف المصدركاملا على عنواني البريدي حتى اقوم بعمل تجربة كاملة قبل طرح الموضوع، عنواني واضح للكل
موفقة ان شاء الله
السلام عليكم يا ... سني (هدا هو اسمك و لا لقبك )
عموما انا مش عارفة شو اسمك علشان اخاطبك فيه
و شكرا كتيير للرد علي في المنتدى و شكرا كتيير على روحك المرحة
المهم الملف اسمو collect.dat
و البيانات التي فيه كالتالي و هي ليست assci
هي بيانات عادية و اريد نقلها الى جدول اسمه مثلا collect data
و هي بيانات ناتجة عن ساعة دوام و مطلوب مني اني افهم النظام و اربطو مع البرنامج الذي يريدوني ان اعملو على الاوراكل ..علشان يوظفوني :(
و يا عالم ...
المهم هدا شكل الملف
00000A00102100608000000245454
00000B00202100614300000245454
00000A00102100613470000245454
00000B00202100615000000245454
00000A00102100608000000012444
[collect.dat]
ColNameHeader=False
Format=FixedLength
MaxScanRows=0
CharacterSet=OEM
Col1="non" Integer Width 5
Col2="case" Char Width 1
Col3="case_n" Integer Width 3
Col4="year" integer Width 2
Col5="month" Integer Width 2
Col6="day" Integer Width 2
Col7="hour" integer Width 2
Col8="min" integer Width 2
Col9="non2" Char Width 2
Col10="badge" integer Width 8
و شكرا للتعاون
و على فكرة انا حاولت ابعتنلك على ايميلك بس ما مشي الحال باظن انك كاتبو غلط
آسف، صحيح، عنواني ما مظبوط، والصحيح هو
والسني هو اسمي الحقيقي، ان شاء الله ح اضع الحل كامل بإذن الله اليوم مساء، لأني بالمكتب دلوقت
السلام عليكم
كيف الحال ؟؟؟
شو صار معك ..
انا من يومها باستنى الرد بس ما وصلني
و كل مرة باحاول ابعت فيها ايميل ما كان يزبط
و انت ما رجعت رديت عليا
إن شاء الله التاخير لخير
و عموما شكرا
عن طرق SQL LOADER وهو برناج موجود مع اوراكل
sqlldr72 userid=USERNAME/PASSWARD@PROD control=hand.ctl log=finger.log
بالنسبة للCONTROL
HAND.CTL
Load Data
INFILE HANDP.DAT
INTO TABLE MYTABLE
TRUNCATE
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
(FELD1.FELD2,FELD3)
يجب ان تكون FELD1,FELD2,FELD3 اسماء فيلدات MYTABLE
وهذه الكوما COMMA الموجودة بعد لاغ يمكن ان تكون اي شي اخر ممكن مسافة ممكن نجمة اي شى بستكون البيانات فيDAT FILE نفسها فمثلا لوكانت COMMA
AAJHGHG,14514,GFDS4454
HFGFDF,545DF,HFDGH
شكرا كتيير اخي ابو خلف
بس معلش و لو بدي اغلبك شوية
لاني ما باعرف كتيير في الاوراكل
بس اذا ممكن الخطوات بالزبط ... يعني مثلا انت حكيت انو
sql loader
عبارة عن اشي موجود طيب كيف اوصلو
و الاداه hand .ctl
و الكود اللي كتبتو وين احطو ..
معلش اذا راح اغلبك بس عن جد ضروري كتيير اعرف
و شكرا كتيير
ال SQL LOADER برنامج لنقل الملفات من DAT FILES الى ملفات في الاوراكل
وهو موجود في BIN
ORAWIN954BINSQLLDR72.EXE
وهو برنامج ينزل مع البيرسونال مع مجموعة من ال DLL'S FILE واذا لم يكن لديك فيمكن نسخه
ولتشغيله يجب كتابة التالي اما في BATCH FILE او داخل فورم في الديفلوبر والاسهل داخل BATCH FILE
في مثلا مجلد MYFOLDER
CREATE BATH FILE AND WRITE THIS STATMENT INSIDE
sqlldr72 userid=USERID/PASSWARD@STRING
control=hand.ctl log=finger.log direct=true
1 -USERID= اسم المستخدم مثلا SCOTT والباسورد مثلا TIGER
وال STRING اذا كان لديك DATABASE على SERVER
2- CONTROL اعمل CREATE لملف امتداده CTL
اي افتح من القائمة NEW ---->TEXT DOCUMENT
واكتب داخله
Load Data
INFILE HANDP.DAT
INTO TABLE txt_data
TRUNCATE
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
(sno,pin_code,p_date DATE "mm/dd/yyyy",p_time)
HANDP.DAT اسم الملف المراد تحميل الداتا منه
TXT_DATA اسم الTABLE في اوراكل المراد تحميل الداتا اليه
FIELDS TERMINATED BY ',' اي ان الفواصل بين البيانات في الملف المراد اخذ البيانات منه هو الCOMMA
(sno,pin_code,p_date DATE "mm/dd/yyyy",p_time)
اسماء الفيلدات في الاوراكل في TABLE المراد نقل البيانات اليه ( TXT_DATA )
اي انه عندما اعمل DESC TXT_DATA;
من SQL PLUS
تكون المخرجات
NUMBER SNO
NUMBER PIN_CODE
P_DATE DATE
VARCHAR2 P_TIME
ومن ثم اخزن الملف مثلا بالاسم الموجود في الجملة السابقة HAND.CTL
ومن تحت اسم الملف اختار كافة الملفات
LOG وهو الملف الذي يتم تخزين بياتا عملية النقل ( اي اسم .LOG (
مرحبا
بس معلش فضل عندي سؤال و هو لو كانت الفواصل بين الحقول في الملف
مش comma
يعني انو ما في فواصل بين الحقول مثل
00000B00202100614300000245454
00000A00102100613470000245454
00000B00202100615000000245454
كيف هو راح يعرف انو من الحرف الاول للحرف الخامس عبارة عن حقل رقم 1
و من الحرف الخامس للسابع حقل رقم 2
و هكذا
و كمان عندي سؤال .. انت ذاكر اشي اسمو log في الاخر
شو هدا وشو فايدتو
و شكرا
يمكنك استخدام الامر POSITION في هذه الحالة، فمن الواضح ان الحقول عندك كالآتي،
الحقل الاول من 1 الى 5 (بطول 5)
الحقل الثاني الخانة السادسة (بطول 1)
الحقل الثالث من 7 الى 9 (بطول 3)
الحقل الرابع من 10 الى 11 (بطول 2)
الحقل الخامس من 12 الى 13 (بطول 2)
الحقل السادس من 14 الى 15 (بطول 2)
الحقل السابع من 16 الى 17 (بطول 2)
الحقل الثامن من 18 الى 19 (بطول 2)
الحقل التاسع من 20 الى 21 (بطول 2)
الحقل العاشر والاخير من 22 الى 29 (بطول 8)
ويمكنك في هذه الحالة الاستعاضة عن الفواصل بهذه التعريفات في الكونترول فايل وكالآتي
Col1 position(1:5) Integer,
Col2 position(6:6) Char,
Col3 position(7:9) Integer,
Col4 position(10:11) integer,
Col5 position(12:13) Integer,
Col6 position(14:15) Integer,
Col7 position(16:17) integer,
Col8 position(18:19) integer,
Col9 position(20:21) Char,
Col10 position(22:29) integer
لاحظ انني لم استخدم مسميات الحقول التي قمت انت بتسميتها، وذلك لتحفظي على هذه المسميات التي لا افضل استخدامها، اذ ان بعضها كلمات معروفة بالنسبة للأوراكل، ويفضل عدم استخدامها كأسماء لحقول أو متغيرات بل عليك بناء اسماء من عندك، وعليك ان تستبدل هذه المسميات بغيرها (المسميات المقبولة في قائمتك هي case_n,non2,badge فقط، والبقية يجب تغييرها)
هذا الموضوع مغلق.