الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

كيف أفرغ الجداول من البيانات مره واحده

Featured Replies

بتاريخ:

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

أرجو الأفاده , هذا السؤال مهم جدا أرجو الرد

مع فائق الشكر والتقدير

بتاريخ:

السلام عليكم .
يرجى التوضيح اكثر .
وين بدك تستعمل السكريبت .
اما اذا على sql بامكانك كتابة الجملة التالية تعطيك جملة delete لكل الملفات الي عندك او بتحدد الملفات بجملة where
يبقى عليك تنفيذ الجمل الناتجة من select

SELECT ' DELETE FROM '||TNAME ||' ;' FROM TAB WHERE TABTYPE = 'TABLE';

DELETE FROM A ;
DELETE FROM B ;
DELETE FROM C;

بتاريخ:

وضح اكتر

بتاريخ:

معلش تحكيلي انت وين بدك تستعمل ال سكريبت ؟

وجملة ال select الي مكتوبة ابتعطيك جمل جاهزه لعملية مسح الملفات ما عليك سوى تنفيذها.

بتاريخ:
  • كاتب الموضوع

عفوا
سؤالي هو :
لدي قاعدة بيانات على الــ sql plus
تحتوي العديد من الجداول تتراوح بين 50 - 60 جدول ويوجد فيها بيانات
فهل يوجد ما أكتبه داخل الــ sql يقوم بمسح كل البيانات من كل الجداول مباشرة بدون أن أذهب لكل جدول وأعمل delete فهذا يستغرق وقت طويل

مع جزيل الشكر

بتاريخ:
  • كاتب الموضوع

الأخ Hani_S
الــ Query اللي كتبتهه مش شغاله ؟؟؟

SELECT ' DELETE FROM '||TNAME ||' ;' FROM TAB WHERE TABTYPE = 'TABLE'; not work

أرجو التأكد منها

بتاريخ:

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

والرجاء اذا في غلط في الجمله ابعتلي ال error والجمله جربتها وما في مشكله .

واحتفظ بهاي الجمل الناتجه في سكريبت ونفذه في اي وقت ابتحتاج اله.

بتاريخ:
  • كاتب الموضوع

عزيزي أخ هاني شكرا لجوابك
أني كتبت الجمله نفسها مطابقه 100% بدو ن تعديل أو أي شئ
والجواب كان:

no rows selected

بتاريخ:
  • كاتب الموضوع

الأخ Hani_S
لقد تم تنفيذ الــ Query بنجاح وظهرت عبارات المسح ولكن يوجد شئ مهم أنه نافذة الــ SQL*Plus لا تستوعب كل الأسطر لكي أعمل نسخ ومن ثم لصق
؟؟؟

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

بتاريخ:

عزيزي .
بالماوس اضغط وانزل لتحت كلهم راح يتعلموا واعمل نسخ .

بتاريخ:
  • كاتب الموضوع

شكرا جزيلا أخ هاني على ردك الكريم
طيب ألا توجد طريق للسق هذا الــ Query على أيعاز الــ Delete لعمل مسح لكل بيانات الجداول مباشرة بدون نسخ ولسق ؟؟؟؟

مع فائق أحترامي وتقديري

أخوك عباس

بتاريخ:

يمكنك عمل procedure كهذا :-

CREATE OR REPLACE PROCEDURE delete_all_data
IS
  v_statement   VARCHAR2 (200);
BEGIN FOR i IN (SELECT *
              FROM user_tables) LOOP
     v_statement :=
               'delete ' || i.table_name ;
     EXECUTE IMMEDIATE v_statement;
  END LOOP;
commit;
END;
/



و من ثم تنفيذه هكذا :-

exec delete_all_data



لكن المشكلة أخى العزيز فى ال constraints التى تحكم الربط بين الجداول و بالأخص ال ( Primary Keys , Foreign Keys )
فهى التى ستعطل كودى و كود الأخ Hani_S

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

have a nice day

بتاريخ:

أخوانى .... لقد وجدت الحل الأمثل للمشكلة ...... و هو اننا يجب اولاً ان نقوم ب disable لكل ال constraints التى تمثل ال foreign key و من ثم القيام بعملية حذف البيانات من الجداول.

هذا هو الكود كامل ممكن تعمله نسخ و لصق او تحميله من المرفقات مع تمنياتى بالتوفيق للجميع :P :P :rolleyes:

CREATE OR REPLACE PROCEDURE dis_fk_cons IS
BEGIN FOR i IN (SELECT *
    FROM user_constraints WHERE constraint_type = 'R' AND status = 'ENABLED')
 LOOP
   EXECUTE IMMEDIATE 
'alter table ' || i.TABLE_NAME || ' disable constraint ' || i.constraint_name;
 END LOOP;
END;
/

exec dis_fk_cons;

CREATE OR REPLACE PROCEDURE delete_all_data IS 
v_statement VARCHAR2(200);
BEGIN FOR i IN (SELECT *
    FROM user_tables) LOOP
   v_statement := 'delete ' || i.TABLE_NAME;
   EXECUTE IMMEDIATE v_statement;
 END LOOP;
 COMMIT;
END;
/

exec delete_all_data;

-- Now all data in all tables has been deleted forever .



لو عاوز تجربها .... فممكن تجربها على اسكيمة تانية مش بتستخدمها ذى ال oe ، و ذلك من خلال دخولك على اسكيمة ال system و كتابة التالى :-

alter user oe account unlock ;
grant connect , resource to oe ;
alter user oe identified by oe ;
conn oe/oe



و لما تدخل ابقى طبق الكود اللى مرفق بالمرفقات.

فى سلامة الله

delete_schema.txt

تم تعديل بواسطة hanyfreedom

بتاريخ:
  • كاتب الموضوع

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

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

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

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

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

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

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.