Extract data from DB to flat file
2008-03-13 11:44
453 查看
方法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
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
相关文章推荐
- 94.You plan to move data from a flat file to a table in your database. You decide to use SQL*Loader
- Import Data from *.xlsx file to DB Table through OAF page(转)
- 使用OGG"Loading data from file to Replicat"的方法应该注意的问题:replicat进程是前台进程
- Shell: how to list all db links in oracle DB to generate a flat file (生成dblink列表文件)
- [问题解决] initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock
- DBSPI40-1: Unable to fetch data from table 'V$SYSSTAT' [ORA-03135: connection lost contact]
- get byte[] from DB & send it to client as download file
- iOS ERROR: unable to get the receiver data from the DB 解决方式
- decruft(A library to extract meaningful data from a webpage) 源码分析
- SQL Script for select data from ebs and make a csv file to FTP
- How to import data from a text file to a ACCESS table
- Resolution to the record count increasing of the file exported from DB when ‘0A’ is included in it
- [ERROR]-Error: failure: repodata/filelists.xml.gz from addons: [Errno 256] No more mirrors to try.
- [ERROR]-Error: failure: repodata/filelists.xml.gz from addons: [Errno 256] No more mirrors to try.
- 利用Tstringlist对文件流进行处理(介绍extractfilepath(),savetofile(),loadfromfile()使用)
- OGG "Loading data from file to Replicat"table静态数据同步配置过程
- a universal class to complete import data from an excel file into a database
- How to extract .dmg further .pkg file from Leopard
- How to Recover from a Lost or Deleted Datafile with Different Scenarios [ID 198640.1]
- iOS ERROR: unable to get the receiver data from the DB 解决方案