الانتقال إلى المحتوى
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.

عمل Loading لبيانات من نوع LOB

Featured Replies

بتاريخ:

سوف أقوم بهذا الموضوع بشرح عملية تحميل البيانات (Loading) من نوع LOB بإستخدام SQL* Loader وباستخدام Externel table:

أولاً : بإستخدام SQL* Loader
هناك عدة طرق لتحميل البيانات من نوع LOB باستخدام SQL* Loader ولكني سوف أركز على طريقة LOBFILE :
قم بتحميل الملفات المرفقه:

أول ملفين من نوع WORD والملف الثالث والرابع من نوع TEXT

البيانات الأصلية ها هي :

1,one,01-JAN-2006,clob_test1.txt,blob_test1.doc
2,two,02-JAN-2006,clob_test2.txt,blob_test2.doc



الآن نقوم بخلق جدول جديد أسمه مثلاً lob_tab وكما يلي:

CREATE TABLE lob_tab (
 number_content    NUMBER(10),
 varchar2_content  VARCHAR2(100),
 date_content      DATE,
 clob_content      CLOB,
 blob_content      BLOB
);



ومن ثم نقوم بتعريف SQL* Loader ونسميه مثلاً lob_test.ctl لتحميل البيانات وكما يلي :

LOAD DATA 
INFILE 'lob_test_data.txt'
  INTO TABLE lob_tab
  FIELDS TERMINATED BY ','
  (number_content    CHAR(10),
   varchar2_content  CHAR(100),
   date_content      DATE "DD-MON-YYYY" ":date_content",
   clob_filename     FILLER CHAR(100),
   clob_content      LOBFILE(clob_filename) TERMINATED BY EOF,
   blob_filename     FILLER CHAR(100),
   blob_content      LOBFILE(blob_filename) TERMINATED BY EOF)



الآن نفذ الأمر الأتي من خلال Command :-

sqlldr userid=test/test@db10g control=lob_test.ctl log=lob_test.log bad=lob_test.bad



والخطوة الأخيرة هي الأستعلام عن البيانات التي تم تحميلها وكما يلي :

COLUMN varchar2_content FORMAT A16
COLUMN date_content FORMAT A12
COLUMN clob_content FORMAT A20

SELECT number_content,
      varchar2_content,
      TO_CHAR(date_content, 'DD-MON-YYYY') AS date_content,
      clob_content,
      DBMS_LOB.getlength(blob_content) AS blob_length
FROM   lob_tab;

NUMBER_CONTENT VARCHAR2_CONTENT DATE_CONTENT CLOB_CONTENT         BLOB_LENGTH
-------------- ---------------- ------------ -------------------- -----------
            1 one              01-JAN-2006  This is a clob test1       24064
            2 two              02-JAN-2006  This is a clob test2       24064

2 rows selected.



وهكذا تم استخدام SQL* Loader لتحميل البيانات من نوع LOB

والمرة القادمة أن شاء الله سوف نستخدم نفس الملفات ولكن بإستخدام External Table

إن أصابت فمن الله وأن أخطأت فمن نفسي والشيطان

blob_test1.doc

blob_test2.doc

clob_test1.txt

clob_test2.txt

تم تعديل بواسطة omar-alreyati

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

ثايناً : بإستخدام External table
في هذا الدرس سوف يتم استخدام External table لقراءة البيانات من نوع CLOB و BLOB

الخطوة الاولى: هي عمل Directory وكما في المثال الأتي :

CREATE OR REPLACE DIRECTORY temp_dir AS '/tmp/';



الخطوة الثانية : حمل الملفات المرفقة في الموضوع السابق (بإستخدام SQL* Loader)

البيانات الأصلية كما في يلي :

1,one,01-JAN-2006,clob_test1.txt,blob_test1.doc
2,two,02-JAN-2006,clob_test2.txt,blob_test2.doc



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

CREATE TABLE lob_tab (
 number_content    NUMBER(10),
 varchar2_content  VARCHAR2(100),
 date_content      DATE,
 clob_content      CLOB,
 blob_content      BLOB
)
ORGANIZATION EXTERNAL
(
 TYPE ORACLE_LOADER
 DEFAULT DIRECTORY temp_dir
 ACCESS PARAMETERS
 (
   RECORDS DELIMITED BY NEWLINE
   BADFILE temp_dir:'lob_tab_%a_%p.bad'
   LOGFILE temp_dir:'lob_tab_%a_%p.log'
   FIELDS TERMINATED BY ','
   MISSING FIELD VALUES ARE NULL
   (
     number_content    CHAR(10),
     varchar2_content  CHAR(100),
     date_content      CHAR(11) DATE_FORMAT DATE MASK "DD-MON-YYYY",
     clob_filename     CHAR(100),
     blob_filename     CHAR(100) 
   )
   COLUMN TRANSFORMS (clob_content FROM LOBFILE (clob_filename) FROM (temp_dir) CLOB,
                      blob_content FROM LOBFILE (blob_filename) FROM (temp_dir) BLOB)
 )
 LOCATION ('lob_test_data.txt')
)
PARALLEL 2
REJECT LIMIT UNLIMITED
/


ملاحظة : COLUMN TRANSFORMS يوضح كيف يتم نقل من نوع BLOB و CLOB

الخطوة الأخيرة : التأكد من نقل البيانات الى الجدول (lob_tab ) بشكل صحيح وكما يلي :

COLUMN varchar2_content FORMAT A16
COLUMN date_content FORMAT A12
COLUMN clob_content FORMAT A20

SELECT number_content,
      varchar2_content,
      TO_CHAR(date_content, 'DD-MON-YYYY') AS date_content,
      clob_content,
      DBMS_LOB.getlength(blob_content) AS blob_length
FROM   lob_tab;

NUMBER_CONTENT VARCHAR2_CONTENT DATE_CONTENT CLOB_CONTENT         BLOB_LENGTH
-------------- ---------------- ------------ -------------------- -----------
            1 one              01-JAN-2006  This is a clob test1       24064
            2 two              02-JAN-2006  This is a clob test2       24064

2 rows selected.




وهكذا تم نقل البيانات من نوع BLOB و CLOB باستخدام الطريقيتن External Table & SQL* Loader

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

وشكراً للجميع.

  • بعد 1 شهر...
بتاريخ:

الأخ الفاضل
جزاك الله كل الخير عن كل مساعدة تقدمها للأخوان
كمل جميلك لوسمحت
كيف أحمل بيانات من ملف أكسيل (بإستخدام SQL* Loader)
مع خالص الشكر مقدماً
[email protected]

بتاريخ:

مشكور اخي عمر شرح جدا واضح وممتاز ،،،

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

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

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

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

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

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.