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

تعلم إنشاء الجداول الخارجية في أوراكل

مغلق
بدأه م. حسام فيصل في 17 نوفمبر 2006 · 5 رد · 4,449 مشاهدة · في قسم إدارة قاعدة البيانات أوراكل
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الجداول الخارجية External Tables :

هل فكرت في يوم من الأيام كيف تستطيع مشاركة بيانات بين أكثر من قاعدة بدون إستخدام Shared Tablespace أو إستخدام Database link أو Replication كما شرحنا في موضوع إدارة قواعد البيانات ؟؟؟؟

؟؟

هل فكرت يوماً أن يقوم مستخدموك الذين لا يعلمون شيئاً عن SQL أو أصابوك بنوبات قلبية و أنت تعلمهم تعليمة Insert و كيفية تنفيذها بالشكل الأفضل ؟؟؟؟؟؟

بل هل فكرت كيفية الحفاظ على بياناتك عند إجراء عملية الفرمتة مثلاً دون اللجوء إلى عمليات Backup المملة ؟؟؟

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

الإجابة عن التساؤلات السابقة هي عنوان درسنا : الجدوال الخارجية External Tables ...

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

على الرغم من مميزات الجداول الخارجية فإنه لديها بعض السيئات ، مثل أن المستخدم لن يكون قادراً عل تنفيذ عملية insert ( يمكنا حل هذه المشكلة بإستخدام utl_file للكتابة على هذه الملفات ) إضافة إلى أن ملف البيانات ليس عليه رقيب و بالتالي يمكن تعديله و العبث بمحتوياته ..

كيف نستطيع إنشاء External Tables ؟؟

يتم إنشاءها بواسطة التعليمة :

Create table table_name
(col_name datatype  …….. )
organization  external
(type  oracle_loader 
default directory   Directory_name 
acess Parameters 
(records	 delimited by	"What you Want " 
  fields terminated by "What you want " 
										 ( col_name		Datatype   [,………. ]
										  )
   location	   ('Thefile.ext'); 
);

مملة و مضجرة !!!!!!!!!!!!!

سأشرحها :

1-

Create table table_name
(col_name datatype  …….. )

هو الجزء الخاص بإنشاء الجدول و هي تعليمة create التي يعلمها الجميع ..

2-

		 default directory   Directory_name

و هنا نحدد Directory ... مهلاًً ما معنى هذا ؟؟

من يتعامل مع مايسمى بــLob يعلم بالتأكيد ما هو Directory ..

بكلمات بسيطة : أرادت أوراكل مع إدخال أنماط Lob بأنواعها Bfile و Blob أن تمنح ميدري القاعدة نوعااً من السيطرة على أماكن تواجد الملفات التي يتم تخزينها داخل القاعدة Blob أو إضافة مؤشر لها BFILE و ذلك عن طريق تحديد مجلدات معينة بحد ذاتها من أجل أن تكون مكاناً لتخزين هذه الملفات ، و بالطبع كانت أغراض Directory هي الوسيلة لتنفيذ ذلك ...

كيف يتم إنشاء Directory ؟؟

يجب على المستخدم أن يملك صلاحية Create Directory من أجل إنشائه ( هذه الصلاحية لا يملكها المستخدم SCOTT ) ..

تعليمة الإنشاء :

Create  Directory   Dir_name  as  'Directory Path';

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

grant read on dir_name	to  scott;

3- نأتي على الجزء الأهم و هو access Parameter

(records	 delimited by	"What you Want " 
  fields terminated by "What you want " 
										 ( col_name		Datatype   [,………. ]
										  )
   location	   ('Thefile.ext'); 
);

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

 records	 delimited by	"What you Want "

و يمكننا أن نضع newline للدلالة على أن كل سطر يعبر عن سجل ..

ثم نحدد ما هو الفاصل بين القيم ضمن السجل

fields terminated by "what you want";

ثم نحدد ترتيب تتالي هذه القيم :

										 ( col_name		Datatype   [,………. ]
										  )

و أخيراً نحدد اسم الملف مع لاحقته الموجود داخل Directory الذي قمنا بإنشائه و الذي يحوي البيانات :

   location	   ('Thefile.ext');

ما رأيكم بمثال :

لننشىء جدولاً خارجياً يحوي على معلومات طلاب داخل مدرسة ما ..

1- ننشىء ملف نصي و لنقل studentInformations.CSV داخل المجلد c:\myexternalTable ، بحيث نلتزم بالتنسيق :

FirstName , LastName   ,  FatherName

و هو التنسيق CSV الذي يمكننا إنشاؤه بواسطة Excel ... مثال

أحمد ,الأتاسي,عمر
محمد,النكدلي,سامر
ماهر,القاسم ,عبد المعين
مجد,الناصر,قاسم

2- نقوم بتسجيل الدخول كــSystem أو sys لنقوم بإنشاء Directory :

SQL> create directory externalTable as 'C:\myExternalTables';

Directory created.
SQL> grant read on directory  externalTable to public;

Grant succeeded.

SQL> grant write on directory  externalTable to public;

Grant succeeded.

3- لنسجل الدخول الآن بواسطة المستخدم Scott و ننشئ الجدول الخارجي :

Create table ExternalStudentsTable
( name varchar2(15 ) , fname varchar2(15) ,  lastname  varchar2(15) )
Organization  external 
(type ORALCE_LOADER 
 Default  directory  externalTable 
 Access parameters ( 
									 Records delimited by newline 
							   Fields terminated by  "," 
									  (name char(15 ) ,  
										Lastname	char(15) , 
										Fname char (15 ) 
									) ) 
Location ( ' studentinformations.csv')
);

و بذلك نكون قد انتهينا ....

بالتوفيق

تم تعديل هذه المشاركة بواسطة حسام فيصل في 17 نوفمبر 2006 في 03:47

#2

أخي حسام ...

هل فكرت يوماً أن هذا الموضوع جميل جدا جدا ....جزاك الله الخير

SCJP 5.0

#3

أهلاً أخي malek و بإنتظار البقية

#4

السلام عليكم

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

http://www.araboug.org/ib/index.php?showtopic=1603

وشكرا

من مواضيعي

برنامج للكفالات والأقساط

برنامج لإدارة مؤسسة نقل الطالبات

بـــــرنامج الصراف الآلي

_______________________

سبحان الله وبحمده سبحان الله العظيم

#5

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

#6

مشكووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووورر

هذا الموضوع مغلق.

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