سلام. Sql loader یکی از ابزارهایی هست که سرعت بسیار بالایی در ورود اطلاعات به دیتابیس داره. بعضی اوقات فکر می کنم که بخشی از اطلاعات را از حفظ می زنه :| .

فایل تستی که امروز می خوایم وارد کنیم بصورت زیر هست:

DATE,NUMBER_TEST,PHONE,TEXT_TEST
2018/08/23-11:10:17,121,78903456789,1_row
2018/08/24-11:11:17,131,78903256789,2_row
2018/08/22-11:12:17,141,78903456789,3_row
2018/08/27-11:13:17,151,78903456789,4_row
2018/08/24-11:14:17,161,78903456789,5_row
2018/08/29-11:15:17,171,78903456789,6_row
2018/08/21-11:20:17,181,78903456789,7_row
2018/08/24-11:30:17,191,78903356789,8_row
2018/08/20-11:40:17,101,78903436789,9_row
2018/08/24-11:50:17,111,78903456789,10_row
2018/08/22-12:10:17,121,78903456789,11_row
2018/08/21-13:10:17,131,78903456789,12_row
2018/08/13-14:10:17,141,78903453339,13_row
2018/08/14-15:10:17,161,78903456739,14_row
2018/08/25-15:11:17,171,78903456389,15_row
2018/08/29-12:10:17,181,78903453789,16_row
2018/08/21-11:10:27,191,78903456789,17_row
در sqlldr به یک فایل کنترل احتیاج داریم که اطلاعات جدول توش باشه و نحوه تبدیل داده رو بهش بگه:
[oracle@db11g-node2 ~]$ cat sqlldr.ctl
OPTIONS (
  SKIP=1,
  PARALLEL=true,
  DIRECT=true,
  SKIP_INDEX_MAINTENANCE=true
)
LOAD DATA
APPEND
INTO TABLE VAHID_TEST_SQLLDR
        FIELDS TERMINATED BY ","
        TRAILING NULLCOLS
  (
ID sequence,
DATE date  'yyyy/mm/dd,hh24:mi:ss',
NUMBER_TEST,
PHONE,
TEXT_TEST,
TEXT_CONSTANT constant 'vahidnowrouzi.blog.ir'
)
در فایل بالا چند نکته مهم هست. یک وجود خطی که sequence رو برامون میسازه. اول که خواستم شروع کنم، sequence ساختم و بصورت sequence1.nextval جلوی id قرار دادم . هر کاری که کردم نشد. (اگر کسی این روش رو تست کرده و جواب گرفته، لطفاٌ بگه که روش صحیح اون رو هم اضافه کنم) تا اینکه به لینک زیر برخوردم :
توی این مطلب توضیح جامعی اومده و گفته که با ذکر کلمه sequence این امر بصورت خودکار ساخته میشه. 
مطلب دوم در فایل بالا خواندن تاریخ با فرمت مربوطه هست که می تونه به فیلدی که از نوع Date ساخته شده ، وارد بشه.
مطلب سوم مربوط میشه به اضافه کردن عبارات ثابت که در قسمت text_constant اومده.
دقت کنید که اگر csv که میخواید وارد کنید، در قسمت های که به عنوان متن هستند دارای علامت " باشند، عیناً وارد میشه.
جدولی که برای ورود این اطلاعات ساخته شده به شکل زیر هست:
CREATE  TABLE VAHID_TEST_SQLLDR
   ( "ID" NUMBER(20,0), 
"DATE" DATE, 
"NUMBER_TEST" NUMBER(3,0), 
"PHONE" VARCHAR2(20 BYTE), 
"TEXT_TEST" VARCHAR2(50),
    "TEXT_CONSTANT" VARCHAR2(50)
   );
و دستور رو بصورت زیر اجرا می کنیم:
 sqlldr vahid/vahid data=/home/oracle/sqlldr.data control=/home/oracle/sqlldr.ctl log=/home/oracle/sqlldr.log bad=/home/oracle/sqlldr.bad
قسمت log و bad فایلهایی رو ایجاد می کنند که در صورتی که مشکلی وجود داشته باشه، بر اساس اونها قابل پیگیری و حل مشکل میشن.

امیدوارم مفید واقع بشه.


--------------------------------------------------------------------------------------
لطفاً در هنگام رانندگی به احترام عابرین پیاده بایستیم.






مشخصات

تبلیغات

محل تبلیغات شما
محل تبلیغات شما محل تبلیغات شما

آخرین وبلاگ ها

برترین جستجو ها

آخرین جستجو ها

اخبار سراسری ، دانلود محلی برای به‌اشتراک‌گذاری تجربه‌ها ترجمه اختصاصي انيمه و مانگا Gamehaa.ir Jay گلبن ارغوان کپسول های لاغری اسلیمینگ سبز طراحی دکور سالن زیبایی و کلینیک زیبایی پرروش طیور