وبلاگ وحید نوروزی

تجربه و ترجمه و تحقیق درباره اوراکل را در این وبلاگ خواهید یافت.

وبلاگ وحید نوروزی

تجربه و ترجمه و تحقیق درباره اوراکل را در این وبلاگ خواهید یافت.

  • ۰
  • ۰

sqlldr با مخلفات

سلام. 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 فایلهایی رو ایجاد می کنند که در صورتی که مشکلی وجود داشته باشه، بر اساس اونها قابل پیگیری و حل مشکل میشن.

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


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





  • ۹۷/۰۶/۰۵
  • قدیر نوروزی میرصادقی

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی