Saturday, February 23, 2008

tampung ke file dari hasil select

cara ini gw lakuin di unix.

biar lebih mudah gw pisah-pisah filenya sesuai dengan fungsinya.

pertama buat file execute buat jalanin file sql, isinya sbb :
#/bin/sh

ORACLE_HOME=/app/oracle/product/10.2.0/Db_1
export ORACLE_HOME
#jika memang belum diset path oracle homenya
ORACLE_SID=ORACLE_SID
export ORACLE_SID
#sama juga seperti oracle_home
#jika pathnya sudah diset di os-nya gak perlu lagi jalanin perintah diatas

date

cd /export/home/
#supaya posisi direktori berada di file yg mau gw jalanin

$ORACLE_HOME/bin/sqlplus user/password @allSelect.sql

date
#biar gw tau mulai jam berapa dan kelar jam berapa ini query.

#End of File---

kedua buat file sql yang berfungsi untuk menampung file-file sql lain yang akan di jalankan
--Start file

@@dailySql1.sql
@@dailySql2.sql

exit
--End of file

nah yg ketiga ini adalah query yg diperlukan, tapi dikasih contoh yg dailySql1.sql aja :
SET VERIFY OFF
SET FEEDBACK OFF
SET TERMOUT OFF

-- Dates, changes format date
ALTER SESSION SET NLS_DATE_FORMAT = 'DD-Mon-YYYY';

--COLUMN S NEW_VALUE start_date
SELECT trunc(sysdate-1) S FROM dual;

---- + Debug, digunakan kalau melakukan query dengan input date
--DEFINE start_date = &1
---- - Debug, Read from command line

-- Spool File
DEFINE spool_file = dailySql_&start_date..txt

SET PAGESIZE 0
SET LINESIZE 220
-- Linesize adalah jumlah maksimal karakter yg akan ditampung
SET SPACE 1

BREAK ON REPORT

SPOOL &spool_file

select id||"|"||nama
||"|"||alamat||"|"||no_telp from nama_table
where tanggal between trunc(sysdate-1) and trunc(sysdate);

SPOOL OFF

CLEAR BREAKS
SET TERMOUT ON
SET VERIFY ON
SET FEEDBACK ON

SQL Loader

cara menjalankan sql loader :
sqlldr userid=user/password control=/export/home/loader.ctl log=/export/home/loader.log bad=/export/home/loader.bad

loader.log dan loader.bad akan terbuat dengan sendirinya setelah menjalankan perintah load

isi dari loader.ctl :
load data infile '/export/home/dataloader.txt' into table nama_table fields terminated by "|" TRAILING NULLCOLS (ID,NAMA,ALAMAT,NO_TLP)

TRAILING NULLCOLS dimaksudkan jika ada salah satu field yg kosong maka diabaikan, dan akan melanjutkan loader kedata selanjutnya.