الـ SQL LOADER أداة تقوم بإحضار بيانات من ملف خارجي موجود على القرص الصلب إلى جدول موجود في قاعدة البيانات.
ما يلزمنا فعليا هو ملف يحوي البيانات التي نريد تحميلها إلى الجدول data file , يجب أن يكون بصيغة معينة :
مثلا : نعتبر أن كل حقل مفصول عن الاخر بإشارة (,)
و ننعتبر كل سجل مفصول عن الاخر بواسطة سطر جديد new line
مثال عن ملف data file يحوي معلومات (رقم,اسم,البلد) :
كود
1,hussam,syr
2,ahmad,KSA
3,humam,UAE
4,malek,syr
الملف الاخر الذي يلزمنا هو الـ control file الذي يخبر الـ oracle كيف سيقوم بتحميل هذه البيانات .
بعد ذلك سيقوم الـ SQL Loader بإنشاء عمليات الـ insert اللازمة لتحميل البيانات إلى الجدول .
بعد التنفيذ سيقوم الـ SQL Loader بإنشاء ملفين إضافيين هما الـ bad file الذي سيحوي بيانات عن الحقول التي لم يستطع الـ SQL Loader تحميلها إلى الجدول
الملف الثانس هو الـ log file سيحوي على معلومات الحالة كعدد السجلات التي تمت معالجتها و عدد السجلات التي تم تحميلها إلى الجدول.
كتابة الـ control file :
كود
Load Data
Infile 'c:\emp01.dat'
TRUNCATE
Into table emp01
FIELDS TERMINATED BY ","
(id,name,city)
الشرح :
Load data تعليمة ثابتة في كل control file
Infile ملف الذي يحوي البيانات
Badfile أين سينشئ الـ bad file
Into table اسم الجدول الهدف الذي سيخزن فيه بيانات الـ datafile
Fields TERMINATED BY “,” نخبر الـ SQL LOADER أن الحقول مفصولة عن بعضها بإشارة “,”
بالطبع يجب أن يكون لدينا الجدول emp01 مسبقا الذي يملكه المستخدم scott مثلا ..
مبراحل التشغيل :
نسجل الدخول إلى المستخدم scott مثلا و ننشئ الجدول emp01
create table emp01(id number,name varchar(20),city varchar(20));
نقوم في البداية بإنشاء الـ datafile وليكن اسمه emp01.dat على القرص c و نضع فيه البيانات التالية :
كود
1,hussam,syr
2,ahmad,KSA
3,humam,UAE
4,malek,syr
بعد ذلك ننشئ الـ control file و نسميه emp01.ctr مثلا و نكتب بداخه التعليمات :
كود
Load Data
Infile 'c:\emp01.dat'
TRUNCATE
Into table emp01
FIELDS TERMINATED BY ","
(id,name,city)
نفتح محرر أوامر dos و نكتب :
كود
sqlldr scott/oracle control=c:\emp01.dat
إذا جرت الأمور على ما يرام سنرى الخرج التالي :
كود
C:\>sqlldr scott/oracle control=c:\emp01.ctr
SQL*Loader: Release 10.1.0.2.0 - Production on Mon Nov 27 21:08:17 2006
Copyright (c) 1982, 2004, Oracle. All rights reserved.
Commit point reached - logical record count 3
Commit point reached - logical record count 4
C:\>
و نرى أنه قد تم إنشاء ملف emp01.log الذي تحدثنا عنه سابقا .. و إذا حدثت أخطاء يتم إنشاء ملف الـ bad
نعود إلى الـ sqlplus و نستعلم عن الجدول emp01
كود
Select * from emp01;
سنرى البيانات السابقة أصبحت موجودة في الجدول ..
اتمنى أن تكون الفكرة واضحة …