Extract data from DB to flat file

方法1:
1)A.sql
DECLARE
CURSOR c_get_sup_list IS
SELECT source_name, source_org_id, org_name, country_code
  FROM agg_supplier
 WHERE record_status = 'm'
   AND generated_date is null
ORDER BY source_name;
BEGIN
FOR rec_supplier_list IN c_get_sup_list LOOP
  DBMS_OUTPUT.PUT_LINE('"' || rec_supplier_list.source_name || '","' || rec_supplier_list.source_org_id || '","' || rec_supplier_list.org_name || '","' || rec_supplier_list.country_code || '"');
END LOOP;
END;
 2) B.sql
WHENEVER SQLERROR EXIT 79

set serveroutput on
set feedback off
set trims on
set pagesize 0
set timing off
set lin 5000
spool /home/gsol/cnsqlsetup/ supp.csv

@/home/gsol/cnsqlsetup/ A;

spool off
set serveroutput off
EXIT 76

3)C.sh
DATEYMD=`date +%Y%m%d`
DATEHM=`date +%H%M`
BACKUP=~/cnsqlsetup/backup_dedup
EMAILRCP='dingxy@aa.com bb@aas.com'

cd ~/cnsqlsetup/

sqlplus usrname/password@DBname @B;

CSV_FILE_TODAY='supp_'$DATEYMD$DATEHM'.csv'
CSV_GBK_FILE_TODAY='supp_'$DATEYMD$DATEHM'_GBK.csv'

mv supp.csv $CSV_FILE_TODAY

iconv -c -f UTF-8 -t GBK -o $CSV_GBK_FILE_TODAY $CSV_FILE_TODAY

cat  $CSV_GBK_FILE_TODAY |(uuencode $CSV_GBK_FILE_TODAY; echo "Hi. Thanks")| mail -s  "subject ($DATEYMD)"  $EMAILRCP

mv $CSV_FILE_TODAY $CSV_GBK_FILE_TODAY $BACKUP

这是从数据从数据库里extract出来,保存为||给分隔符的csv file.并且保存为两种encoding的文件。

这种方法可以避免这样的问题:
ORA-01489: result of string concatenation is too long。
cause :
A concatenated string value cannot exceed 4000 characters. When you create a column by concatenating the columns, for some rows the length exceeds 4000 characters.

A concatenated string value cannot exceed 4000 characters. When you create a column by concatenating the columns, for some rows the length exceeds 4000 characters.

方法2:会出现 ORA-01489: result of string concatenation is too long的错误

SET LINESIZE 80
SET PAGESIZE 0
SET ECHO OFF
SET FEEDBACK OFF
CLEAR COLUMNS
CLEAR BREAKS
SET TERMOUT OFF
SET AUTOPRINT OFF
SET VERIFY OFF
SET TRIMSPOOL ON

--perform extraction for table1
spool aa.csv;
  select ID || ',"'|| SOURCE_NAME || '","'|| SOURCE_PRODUCT_ID || '","'|| URL || '","'|| SOURCE_ORG_ID || '","'|| DESCRIPTION || '","'|| PRODUCT_IMAGE_URL || '","'|| PRODUCT_IMAGE_NAME || '","'|| MODEL_NUM || '","'|| RECORD_STATUS || '","'|| SOURCE_CATEGORY || '","'|| KEY_SPECIFICATION || '","'|| CERTIFICATION || '","'|| PROCESS_DATE || '",'|| BATCH_NO from table1 where BATCH_NO=&1 and rownum <11;
spool off;

exit;
保存为aa.csv

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值