المساعدة - البحث - قائمة الأعضاء - التقويم
نسخة كاملة: تعلم إنشاء الجداول الخارجية في أوراكل
برمجة - شبكات - كمبيوتر - منتديات الفريق العربي للبرمجة > منتديات قواعد البيانات > Oracle قسم قواعد البيانات أوراكل > قسم إدارة قاعدة البيانات أوراكل
م. حسام فيصل
الجداول الخارجية 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')
);

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





malek_sa
أخي حسام ...
هل فكرت يوماً أن هذا الموضوع جميل جدا جدا ....جزاك الله الخير
م. حسام فيصل
أهلاً أخي malek و بإنتظار البقية
dbprog
السلام عليكم
موضوع جميل اخ حسام أيضا هناك موضوع على هذا الرابط يحتوي على معلومات اضافية
http://www.araboug.org/ib/index.php?showtopic=1603
وشكرا
ibrahim_elharon
جزاك الله خيرااا
ahmadkoo
مشكووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووووورر
هذه "نسخة - خفيفة" من محتويات الرئيسية للإستعراض الكامل مع المزيد من الصور والخيارات الرجاء إضغط هنا.
Invision Power Board © 2001-2009 Invision Power Services, Inc.