国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

測試ORACEL的文本文件導入導出

2024-07-21 02:36:50
字體:
來源:轉載
供稿:網友

  關于導出
  原理
  通過sqlplus的的報表功能生成文本文件,但產生的文本文件因分析原因存在空行現象(只有回車沒有其它),可以通過第三方方式處理一下生成標準文本
  A 學習過程
  1 建表
  
  SQL>CREATE TABLE TESTINOUT(ID NUMBER(10), USERNAME VARCHAR2(10), DATE1 DATE, MONEY NUMBER(6, 2));
  
  2 添加數據
  SQL>insert into TESTINOUT(id,username,date1,money) values(1,'will',to_date('29-12-2001','dd-mm-yyyy'),33.33)
  SQL>insert into TESTINOUT(id,username,date1,money) values(2,'ddxxkk',to_date('29-12-2002','dd-mm-yyyy'),443.33)
  SQL>insert into TESTINOUT(id,username,date1,money) values(1234567890,'thisistest',to_date('29-12-2002','dd-mm-yyyy'),4443.33)
  
  3 設定列間距為''(沒有空格)
  SQL> set colsep ''
  
  4 
  SQL>column id format a10 truncate
  SQL>column money format a6 truncate
  SQL> select to_char(id,'0000000009S') as id,username,to_char(date1,'yyyymmdd') as date1,to_char(money*100,'000000s') as money from testinout;
  ID USERNAME DATE1 MONEY
  ----------------------------------
  0000000001test 20011229003333
  0000000002ddxxkk 20021229055500
  1234567890thisistest20021229444333
  
  
  B 
  測試過程
  1編寫腳本
  testinout.sql的內容如下
  
  set colsep ''
  set trimspool on
  set linesize 120
  set pagesize 2000
  set newpage 1
  set heading off
  set term off
  column money format a6 truncate
  column id format a10 truncate
  spool d:/iii
  select to_char(id,'0000000009S') as id,username,to_char(date1,'yyyymmdd') as date1,to_char(money*100,'000000s') as money from testinout;
  spool off
  exit;
  
  2 執行腳本
  sqlplus user1/user1@my8i @d:/testinout.sql
  或
  sqlplus user1/user1 @d:/testinout.sql>d:/t
  
  3 d:/iii.lst的內容如下
  
  0000000001test 20011229003333
  0000000002ddxxkk 20021229055500
  1234567890thisistest20021229444333
  1234567890thisi漢字t20021229444333
  
  4
  完整的一次運行生的iii.lst的腳本 i.sql
  
  CREATE TABLE TESTINOUT(ID NUMBER(10), USERNAME VARCHAR2(10), DATE1 DATE, MONEY NUMBER(6, 2));
  insert into TESTINOUT(id,username,date1,money) values(1,'test',to_date('29-12-2001','dd-mm-yyyy'),33.33);
  insert into TESTINOUT(id,username,date1,money) values(2,'ddxxkk',to_date('29-12-2002','dd-mm-yyyy'),443.33);
  insert into TESTINOUT(id,username,date1,money) values(1234567890,'thisistest',to_date('29-12-2002','dd-mm-yyyy'),4443.33);
  set colsep ''
  set trimspool on
  set linesize 120
  set pagesize 2000
  set newpage 1
  set heading off
  set term off
  column money format a6 truncate
  column id format a10 truncate
  spool d:/iii
  select to_char(id,'0000000009S') as id,username,to_char(date1,'yyyymmdd') as date1,to_char(money*100,'000000s') as money from testinout;
  spool off
  
  執行
  D:/>sqlplus user1/user1@my8i @i.sql
  
  C
  相關命令:
  
  設定列間字符
  set colsep '字符'
  
  spool寫入文件前時是否將輸出的尾隨空格刪除
  set trimspool on/off
  
  指定一個報告行的寬度(字符數。
一個漢字占2位),linesize選項范圍(自1至32767)
  set linesize 行寬
  
  指定一頁中的行數,默認為24行 pagesize選項范圍(自0至50000)
  set pagesize  頁行數
  
  控制列標題打印;默認為ON
  set heading on/off
  也就是說第4步中的如下信息是否顯示
  ID USERNAME DATE1 MONEY
  ----------------------------------
  
  新頁前空行數,假如等于0,新頁第1個字符前出現換行符
  set newpage 行數
  
  輸入內容到文件
  spool off/文件名
  
  控制SQL * PLUS 是否顯示在屏幕上,默認為ON,設為OFF,則表示直接從腳本中執行
  set term off
  
  
  關于導入
  
  原理
  通過SQL * Loader(sqlldr) 將文本類型件導入到數據表,
  sqlldr通過控制文件(control='文件名') 進行相應工作
  文本文件有兩個格式
  定長記錄,每行記錄長度固定)
  test 1234 33.44
  ddxxkk 1211 123.00
  變長記錄,通過特定的分界符進行分隔(下例用逗號為分界符)
  test,1234,33.44
  ddxxkk,1211,123.00
  
  對于空行系統自行跳過
  測試
  1 編寫腳本d:/in.clt
  
  load Data
   Infile 'd:/iii.lst'
   append
  into table testinout
  (id position(01:10) integer external,
   username position(11:20) char,
   date1 position(21:28) date 'yyyymmdd',
   money position(29:34) ZONED(6,2)
  )
  
  2 執行腳本
  D:/>sqlldr user1/user1@my8i control='d:/in.ctl'
  
  3 分析結果
  程序自生成日志 d:/in.log ,可以通過sqlldr參數指定 log='文件名'
  程序自生壞數據文件 d:/iii.bad 可以通過sqlldr參數指定 bad='文件名'

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昌乐县| 南宫市| 台中市| 长武县| 北安市| 四川省| 平阳县| 贵溪市| 清水河县| 定西市| 绥中县| 安龙县| 镇雄县| 阿勒泰市| 垣曲县| 徐汇区| 黎川县| 彭泽县| 界首市| 科技| 阿坝县| 五大连池市| 惠东县| 扎兰屯市| 桃园市| 阳城县| 栖霞市| 丽江市| 西安市| 新晃| 沈阳市| 嫩江县| 嘉峪关市| 峨边| 铜梁县| 库伦旗| 吉首市| 仙居县| 舞阳县| 云南省| 湘乡市|