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

首頁 > 開發 > 綜合 > 正文

sqlldr的用法總結

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

  sqlldr userid=lgone/tiger control=a.ctl
  LOAD DATA
  INFILE 't.dat' // 要導入的文件
  // INFILE 'tt.date' // 導入多個文件
  // INFILE * // 要導入的內容就在control文件里 下面的BEGINDATA后面就是導入的內容
  
  INTO TABLE table_name // 指定裝入的表
  BADFILE 'c:/bad.txt' // 指定壞文件地址
  
  ************* 以下是4種裝入表的方式
  APPEND // 原先的表有數據 就加在后面
  // INSERT // 裝載空表 假如原先的表有數據 sqlloader會停止 默認值
  // REPLACE // 原先的表有數據 原先的數據會全部刪除
  // TRUNCATE // 指定的內容和replace的相同 會用truncate語句刪除現存數據
  
  ************* 指定的TERMINATED可以在表的開頭 也可在表的內部字段部分
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  // 裝載這種數據: 10,lg,"""lg""","lg,lg"
  // 在表中結果: 10 lg "lg" lg,lg
  // TERMINATED BY X '09' // 以十六進制格式 '09' 表示的
  // TERMINATED BY WRITESPACE // 裝載這種數據: 10 lg lg
  
  TRAILING NULLCOLS ************* 表的字段沒有對應的值時答應為空
  
  ************* 下面是表的字段
  (
  col_1 , col_2 ,col_filler FILLER // FILLER 要害字 此列的數值不會被裝載
  // 如: lg,lg,not 結果 lg lg
  )
  // 當沒聲明FIELDS TERMINATED BY ',' 時
  // (
  // col_1 [interger external] TERMINATED BY ',' ,
  // col_2 [date "dd-mon-yyy"] TERMINATED BY ',' ,
  // col_3 [char] TERMINATED BY ',' OPTIONALLY ENCLOSED BY 'lg'
  // )
  // 當沒聲明FIELDS TERMINATED BY ','用位置告訴字段裝載數據
  // (
  // col_1 position(1:2),
  // col_2 position(3:10),
  // col_3 position(*:16), // 這個字段的開始位置在前一字段的結束位置
  // col_4 position(1:16),
  // col_5 position(3:10) char(8) // 指定字段的類型
  // )
  
  BEGINDATA // 對應開始的 INFILE * 要導入的內容就在control文件里
  10,Sql,what
  20,lg,show
  
  =====================================================================================
  //////////// 注重begindata后的數值前面不能有空格
  
  1 ***** 普通裝載
  LOAD DATA
  INFILE *
  INTO TABLE DEPT
  REPLACE
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  (DEPTNO,
  DNAME,
  LOC
  )
  BEGINDATA
  10,Sales,"""USA"""
  20,Accounting,"Virginia,USA"
  30,Consulting,Virginia
  40,Finance,Virginia
  50,"Finance","",Virginia // loc 列將為空
  60,"Finance",,Virginia // loc 列將為空
  
  2 ***** FIELDS TERMINATED BY WHITESPACE 和 FIELDS TERMINATED BY x'09' 的情況
  LOAD DATA
  INFILE *
  INTO TABLE DEPT
  REPLACE
  FIELDS TERMINATED BY WHITESPACE
  -- FIELDS TERMINATED BY x'09'
  (DEPTNO,
  DNAME,
  LOC
  )
  BEGINDATA
  10 Sales Virginia
  
  3 ***** 指定不裝載那一列
  LOAD DATA
  INFILE *
  INTO TABLE DEPT
  REPLACE
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  ( DEPTNO,
  FILLER_1 FILLER, // 下面的 "Something Not To Be Loaded" 將不會被裝載
  DNAME,
  LOC
  )
  BEGINDATA
  20,Something Not To Be Loaded,Accounting,"Virginia,USA"
  
  4 ***** position的列子
  LOAD DATA
  INFILE *
  INTO TABLE DEPT
  REPLACE
  ( DEPTNO position(1:2),
  DNAME position(*:16), // 這個字段的開始位置在前一字段的結束位置
  LOC position(*:29),
  ENTIRE_LINE position(1:29)
  )
  BEGINDATA
  10Accounting Virginia,USA
  
  5 ***** 使用函數 日期的一種表達 TRAILING NULLCOLS的使用
  LOAD DATA
  INFILE *
  INTO TABLE DEPT
  REPLACE
  FIELDS TERMINATED BY ','
  TRAILING NULLCOLS // 其實下面的ENTIRE_LINE在BEGINDATA后面的數據中是沒有直接對應
  // 的列的值的 假如第一行改為 10,Sales,Virginia,1/5/2000,, 就不用TRAILING NULLCOLS了
  (DEPTNO,
  DNAME "upper(:dname)", // 使用函數
  LOC "upper(:loc)",
  LAST_UPDATED date 'dd/mm/yyyy', // 日期的一種表達方式 還有'dd-mon-yyyy' 等
  ENTIRE_LINE ":deptno:dname:loc:last_updated"
  )
  BEGINDATA
  10,Sales,Virginia,1/5/2000
  20,Accounting,Virginia,21/6/1999
  30,Consulting,Virginia,5/1/2000
  40,Finance,Virginia,15/3/2001
  
  6 ***** 使用自定義的函數 // 解決的時間問題
  create or replace
  function my_to_date( p_string in varchar2 ) return date
  as
  type fmtArray is table of varchar2(25);

  
  l_fmts fmtArray := fmtArray( 'dd-mon-yyyy', 'dd-month-yyyy',
  'dd/mm/yyyy',
  'dd/mm/yyyy hh24:mi:ss' );
  l_return date;
  begin
  for i in 1 .. l_fmts.count
  loop
  begin
  l_return := to_date( p_string, l_fmts(i) );
  exception
  when others then null;
  end;
  EXIT when l_return is not null;
  end loop;
  
  if ( l_return is null )
  then
  l_return :=
  new_time( to_date('01011970','ddmmyyyy') + 1/24/60/60 *
  p_string, 'GMT', 'EST' );
  end if;
  
  return l_return;
  end;
  /
  
  LOAD DATA
  INFILE *
  INTO TABLE DEPT
  REPLACE
  FIELDS TERMINATED BY ','
  TRAILING NULLCOLS
  (DEPTNO,
  DNAME "upper(:dname)",
  LOC "upper(:loc)",
  LAST_UPDATED "my_to_date( :last_updated )" // 使用自定義的函數
  )
  BEGINDATA
  10,Sales,Virginia,01-aPRil-2001
  20,Accounting,Virginia,13/04/2001
  30,Consulting,Virginia,14/04/2001 12:02:02
  40,Finance,Virginia,987268297
  50,Finance,Virginia,02-apr-2001
  60,Finance,Virginia,Not a date
  
  7 ***** 合并多行記錄為一行記錄
  LOAD DATA
  INFILE *
  concatenate 3 // 通過要害字concatenate 把幾行的記錄看成一行記錄
  INTO TABLE DEPT
  replace
  FIELDS TERMINATED BY ','
  (DEPTNO,
  DNAME "upper(:dname)",
  LOC "upper(:loc)",
  LAST_UPDATED date 'dd/mm/yyyy'
  )
  BEGINDATA
  10,Sales, // 其實這3行看成一行 10,Sales,Virginia,1/5/2000
  Virginia,
  1/5/2000
  // 這列子用 continueif list="," 也可以
  告訴sqlldr在每行的末尾找逗號 找到逗號就把下一行附加到上一行
  
  LOAD DATA
  INFILE *
  continueif this(1:1) = '-' // 找每行的開始是否有連接字符 - 有就把下一行連接為一行
  // 如 -10,Sales,Virginia,
  // 1/5/2000 就是一行 10,Sales,Virginia,1/5/2000
  // 其中1:1 表示從第一行開始 并在第一行結束 還有continueif next 但continueif list最理想
  INTO TABLE DEPT
  replace
  FIELDS TERMINATED BY ','
  (DEPTNO,
  DNAME "upper(:dname)",
  LOC "upper(:loc)",
  LAST_UPDATED date 'dd/mm/yyyy'
  )
  BEGINDATA // 但是好象不能象右面的那樣使用
  -10,Sales,Virginia, -10,Sales,Virginia,
  1/5/2000 1/5/2000
  -40, 40,Finance,Virginia,13/04/2001
  Finance,Virginia,13/04/2001
  
  8 ***** 載入每行的行號
  
  load data
  infile *
  into table t
  replace
  ( seqno RECNUM //載入每行的行號
  text Position(1:1024))
  BEGINDATA
  fsdfasj //自動分配一行號給載入 表t 的seqno字段 此行為 1
  fasdjfasdfl // 此行為 2 ...
  
  9 ***** 載入有換行符的數據
  注重: unix 和 windows 不同 //n & /n
  < 1 > 使用一個非換行符的字符
  LOAD DATA
  INFILE *
  INTO TABLE DEPT
  REPLACE
  FIELDS TERMINATED BY ','
  TRAILING NULLCOLS
  (DEPTNO,
  DNAME "upper(:dname)",
  LOC "upper(:loc)",
  LAST_UPDATED "my_to_date( :last_updated )",

  COMMENTS "replace(:comments,'/n',chr(10))" // replace 的使用幫助轉換換行符
  )
  BEGINDATA
  10,Sales,Virginia,01-april-2001,This is

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 民丰县| 清流县| 东安县| 山东省| 吉安市| 澎湖县| 三门县| 小金县| 泰来县| 东方市| 绍兴市| 丹东市| 卢湾区| 申扎县| 瑞丽市| 曲靖市| 青州市| 盱眙县| 张北县| 于都县| 喀喇沁旗| 大同县| 白朗县| 富阳市| 镇坪县| 射阳县| 宿松县| 启东市| 新丰县| 邓州市| 芜湖县| 兴隆县| 稷山县| 即墨市| 兰西县| 保康县| 绵阳市| 洛川县| 平江县| 滕州市| 紫金县|