الانتقال إلى المحتوى

سؤال في الـ Export And Import


eslam elbyaly

Recommended Posts

سلام عليكم ,

فرضا يا جماعة ان عندي داتابيز , فيها جدول

1 hasan

2 khaled

 

والعمود بتاع الارقام ده pk

وعملت تصدير للداتابيز , وبعدين غيرت بعد كده خالد ده وخليته شوقى مثلا ,

لما اجي اعمل امبورت هيديني ايرور طبعا عشان الـ unique constraint violated ومش هيدخل الريكورد الي برقم 2 , يعني شوقى هيفضل موجود , ومش هيرجع تاني خالد .

 

الحاجات دي بقى بتتحل ازاي ,

الي وصلتله انك لازم تعمل truncate للجداول في القاعدة كلها , او تعملها drop then recreate it .

الكلام ده يحصل ازاي بقى , ولا في الشركات بتتعامل مع الموضوع ده ازاي عامة  ؟

 

جزاكم الله خيرا

سلام عليكم

رابط هذا التعليق
شارك

اذا كان الغرض البيانات .. فاحنا بنعمل امبورت للجدول كله في جدول مؤقت و بالسيكوال نعمل ميرج من الجدول الجديد للجدول الموجود ... 

اما اذا كان في غرض تاني .. و ليكن تعديل التحليل .. او ربط الجدول علي داتابيز لنك .. او ..أو .. بنعمل هاش للجدول نفسه (يعني يتحذف مع وجود نسخة) و نعمل امبورت للجدول الجديد زي ما  هو و نرجع نسحب الهاش ف الجديد ...

رابط هذا التعليق
شارك

يعني لو عندك 50 جدول اساسي يا بشمهندس , هتعمل 50 جدول مؤقت ؟

وبعدين الكلام ده بيتعمل ازاي , انا شغال اوراكل فورمز , انتو بتنفذوا الكلام ده بسكريبت عادي من برة ولا ايه الحكاية .

انا شغال علي ابلكيشن وعايز الموضوع يحصل يا اما اوتوماتيك بـ task scheduler من الويندوز , او بـ click on a button في شاشة . 

يعني لو فرضنا اني عملت الجداول , فكده كده الفورمز مش بيقرأ الـ merge .

فين الزتونة بقى .

 

- هل ممكن اعمل ملف باتش يكونكت علي السيكول بلس as sysdba ويعمل drop then recreate user واعمل فيه import للسكيما ؟

تم تعديل بواسطة eslam elbyaly
رابط هذا التعليق
شارك

(الزتونة) ان انت مش أدمن . وده في حد ذاته محتاج منك اطلاع و تفتيش علي الموضوع . يعني في حاجة اسمها Dictoinary دي بتجيبها و تنشأ  سكريبت فايل و تربطه ب Job  علي الداتابيز أو أضعف الحق انك تنشأ Task  علي نظام التشغيل Redhat  ,Windows  

مثال بسيط علي استخدام  Dictionary  توضيحا بس لكن الحاجات دي بتاخد باليوم و الاتنين و يمكن الاسبوع عشان تعمل حركة منهم بأمان خصوصا لو في بيانات حساسة ...

 

Capture.png

رابط هذا التعليق
شارك

لو انا فهمت صح , يبقى موضوع الـ dictionary والكلام ده كله ممكن استغني عنه باني اعمل سكريبت في باتش فايل عادي , واعمل task ع الويندوز , مش صح كده ولا انا فاهم غلط .

الي فهمته ان الحكاية كلها سكريبت وتاسك , اعمله بقى في الداتابيز اعمله برة , مش هتفرق ؟

رابط هذا التعليق
شارك

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

رابط هذا التعليق
شارك

نقاش وجدال !!

والله انا بسأل سيادتك , هل ينفع ان موضوع الباتش والتاسك بتاعت الويندوز يحل محل الفكرة الي حضرتك قلت عليها , لانها محتاجة قراءة ومعرفة لانها جديد عليه , وخصوصا ان حضرتك قلت اني مش DBA .

مش عارف بقى ايه الي حدف الموضوع شمال , وخلاك تفهمه كده .

كان ممكن ترد باسلوب احسن من كده والله , بدل ما تقول عليه "جدالي " , او كان ممكن متردش خالص وغيرك يقوم بالواجب .

علعموم شكرا

سلام عليكم

رابط هذا التعليق
شارك

ممكن توضح اكتر بس انت محتاج ايه بالظبط

شكرا لاهتمامك ,

انا علي سكيما اسمها med عملتلها اكسبورت , وبعد فترة جيت اعمل امبورت لملف الاكسبورت ده جوه نفس الداتابيز .

- في جداول طبعا فيها pk .

الطبيعي لما تيجي تعمل امبورت هيطلع ايرورز , فالواحد يعملها ignore .

المشكلة بقى في حالة الداتا الي ذكرتها فوق كده .

لو عندي العمود فيه الداتا دي

1 khaled وملف الاكسبورت فيه

1 mohamed ,

لما ييجي يحاول يدخل محمد في الجدول مش هيقدر لانه هيطلع ايرور unique constraint violated , وهيفضل خالد زي ما هو , يعني مش هاخد القيمة الي في ملف الامبورت .

فالطبيعي ان امسح الداتا من الجداول الاول وبعدين اعمل امبورت علي نضيف , يا اما اعمل دروب للسكيما كلها واعمل  create ليها تاني .

 

ده الي في دماغي , انا بسأل بقى , الشركات بتعملها كده ولا ازاي ؟ هل في طريقة احسن , ولو مفيش , الطريقة دي اصلا بتتعمل ازاي ؟ هل ممكن اعمل سكريبت يكونكت ع الداتابيز ويعمل drop then recreate schema ؟

رابط هذا التعليق
شارك

بالنسبه للشركات 
صعب حد يلعب فى الداتا او ع الاقل يعدل فى Live schema الا لو فى ضروره قووووى
ومش هينفع لو كنت شغال فى ابليكشن كبير عشان كل value بتبقى مرتبطه بأكتر حاجه

انا لما الديفلوبر او اى حد بيحتاج داتا قديمه بعمل تمب سكيمه جديده واعمل فيها امبورت ويبصوا على اللى هما محتاجينوا 
ولو عاوزين يغيروا حاجات قديمه انسب طريقه من الابليشكن نفسه مش من الداتا بيز(الا فى الضروره)

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

http://oracle-base.com/articles/10g/merge-enhancements-10g.php

لو محتاج الموضوع فى الشغل ده تاسك بتاعه الـ DBA

ومافيش داعى للشكر كلنا كنا بنتعلم واقل حاجه نعملها نساعد زى الناس ما ساعدتنا

رابط هذا التعليق
شارك

حضرتك مفهمتنيش ,

اي برنامج من البرامج الصغيرة , العادية , صيدلية , معمل تحاليل , الخ . بيبقى فيه شاشة لتصدير البيانات واستيرادها عن طريق زرار .

بيعملوا الموضوع ده ازاي ؟

 

- ملحوظة : الفورمز مش بيفهم الـ merge statement .

رابط هذا التعليق
شارك

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

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

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

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

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

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

أخوكم....

رابط هذا التعليق
شارك

طب يا جماعة عشان متعبكوش معايا ,

السؤال دلوقتي : ازاي اعمل drop then recreate للسكيما ؟ هل بملف باتش ؟ ولا في طريقة تانية ؟ وايا كانت الطريقة , يا ريت تدوني مثال عليها .

رابط هذا التعليق
شارك

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

FORMS_DDL('drop user user_name cascade')
FORMS_DDL('create user user_name identified by pass')
FORMS_DDL('grant dba to user_name')
اتصل بالمستخدم المنشئ


بعدها تعمل الاستيراد بالامر

host

أرجوا ان كلامي يفيدك وانه مافي خطاء املائي لاني اكتب على عجالة

تحياتي لكم

رابط هذا التعليق
شارك

شكرا جدا يا بشمهندس ميهال , بس للأسف الاجابة بتاعت حضرتك دي الي خلتني اصلا اسأل السؤال من الاول ,

لاني مقدرش من البداية اعمل دروب لليوزر الي انا واقف عليه , ومقدرش اعمل كونكت بـ forms_ddl , وده لانها مش امر ddl والله اعلم , ومتهيألي متعتبرش sql كمان .

وطبعا مش هعرف اكونكت يعني مش هعرف اعمل drop or recreate or grant .

 

عشان كده سألت عن موضوع الباتش فايل , او اي حل تاني , او لو في حل من الفورمز يبقى تمام اوي , اي حاجة يعني , انا مش ممانع والله .

 

جزاكم الله خيرا جميعا .

رابط هذا التعليق
شارك

شكرا جدا يا بشمهندس ميهال , بس للأسف الاجابة بتاعت حضرتك دي الي خلتني اصلا اسأل السؤال من الاول ,

لاني مقدرش من البداية اعمل دروب لليوزر الي انا واقف عليه , ومقدرش اعمل كونكت بـ forms_ddl , وده لانها مش امر ddl والله اعلم , ومتهيألي متعتبرش sql كمان .

وطبعا مش هعرف اكونكت يعني مش هعرف اعمل drop or recreate or grant .

 

عشان كده سألت عن موضوع الباتش فايل , او اي حل تاني , او لو في حل من الفورمز يبقى تمام اوي , اي حاجة يعني , انا مش ممانع والله .

 

جزاكم الله خيرا جميعا .

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

رابط هذا التعليق
شارك

حضرتك قصدك امر CONN ولا LOG ON , هو في امر اسمه LOG ON , انا دورت علي جوجل بصراحة ملقتش , مش عارف انا بدور غلط ولا ايه .

يا ريت تديني لينك ليه لو سمحت .

رابط هذا التعليق
شارك

أقصد مثلا هذه الطريقة

logon('SCOTT','TIGER');
رابط هذا التعليق
شارك

ربنا يجازيك خير علي اهتمامك يا بشمهندس , انا جربت الاتي :

logout ;

logon('scott','tiger') ;

وشغال تمام , بس المشكلة اني عاوز اكونكت علي sys as sysdba , ودي الي جربتها ومنفعتش , ازاي بقى اكونكت بيه ؟

 

 

- المشكلة التانية بقى , في البطئ بصراحة , يعني متهيألي الأداء عموما هيبقى اي كلام , بياخد وقت علي ما يـ logout then logon , ولسة هيعمل drop then recreate then import , بس خلي

دي نتكلم فيها بعدين , خلينا في الحل المؤقت بتاع sys as sysdba .

رابط هذا التعليق
شارك

اخي اسلام ممكن توضح لي ماهو المغزى من انك تدخل بصلاحيات sys اي اقصد as sysdba

رابط هذا التعليق
شارك

اخي اسلام ممكن توضح لي ماهو المغزى من انك تدخل بصلاحيات sys اي اقصد as sysdba

عشان هو الـ admin وانا هعمل drop schema then recreate .

رابط هذا التعليق
شارك

مافي داعي فقط اعطي المستخدم صلاحيات DBA

مثلا

grant dba to user_name
رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

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