mysqlOracle导入导出txt格式的数据
生活随笔
收集整理的這篇文章主要介紹了
mysqlOracle导入导出txt格式的数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一: mysql導入數據load data infile用法
導出一張表的數據,以',' 為分隔符 select * from pet ?into? outfile 'c:/pet.txt' ??fields terminated by ','?lines terminated by '\r\n'; select * from pet ?into? outfile 'c:/pet1.txt' ??fields terminated by ','??enclosed by '"'?lines terminated by '\r\n';
enclosed by '"' : 數據導出都是帶 引號的?"Fluffy","Harold","cat","f","1993-02-04"
導入一張表的數據,以',' 為分隔符 load data local infile 'c:/pet.txt' into table pet ?fields terminated by ',' ?lines terminated by '\r\n'
load data local infile 'c:/pet.txt' into table pet??fields terminated by ','??lines terminated by '\r\n'?(name,owner,species,sex,birth,death)?;
load data local infile 'c:/pet1.txt' into table pet ?fields terminated by ','?enclosed by '"'??lines terminated by '\r\n'; ?enclosed by'"' 導入帶引號?"Fluffy","Harold","cat","f","1993-02-04" 格式的數據
?注意: ()括號里面的字段可以控制導入的列數量
? 基本語法: load data [low_priority] [local] infile 'file_name txt' [replace | ignore]
into table tbl_name
[fields
[terminated by't']
[OPTIONALLY] enclosed by '']
[escaped by'\' ]
[lines terminated by'n']
[ignore number lines]
[(col_name, )] ? 1 如果你指定關鍵詞low_priority,那么MySQL將會等到沒有其他人讀這個表的時候,才把插入數據。可以使用如下的命令: load data low_priority infile "/home/mark/data sql" into table Orders;
2 如果指定local關鍵詞,則表明從客戶主機讀文件。如果local沒指定,文件必須位于服務器上。
3 replace和ignore關鍵詞控制對現有的唯一鍵記錄的重復的處理。如果你指定replace,新行將代替有相同的唯一鍵值的現有行。如果你指定ignore,跳過有唯一鍵的現有行的重復行的輸入。如果你不指定任何一個選項,當找到重復鍵時,出現一個錯誤,并且文本文件的余下部分被忽略。例如:
load data low_priority infile "/home/mark/data sql" replace into table Orders;
4分隔符
terminated by分隔符:意思是以什么字符作為分隔符
enclosed by字段括起字符
escaped by轉義字符 terminated by描述字段的分隔符,默認情況下是tab字符(\t)
enclosed by描述的是字段的括起字符。
escaped by描述的轉義字符。默認的是反斜杠(backslash:\ )
5.字符集
character set gbk;
這個字符集一定要寫,要不然就會亂碼或者只導入一部分數據。 load data local infile 'c:/pet1.txt' into table ?character set gbk?pet ?fields terminated by ','?enclosed by '"'??lines terminated by '\r\n';
二:Oracle導入數據load data infile用法
1. 輸出txt格式的腳本
set trimspool on
set linesize 40000
set pagesize 0
set newpage none --會在頁和頁面之間沒有任何間隔
set heading off?? --是否顯示列標題
set term off? --輸出的文件不會顯示在屏幕上,可以提高spool的速度
set feedback off? --是否顯示當前sql語句查詢或修改的行數
set trims on? --將spool輸出中每行后面多余的空格去掉
spool c:/s24_tbl_acct.txt
select XACCOUNT??????? ||'|'|| BANK ? ? ? ? ?? ||'|'|| BUSINESS ? ? ?? ||'|'|| CATEGORY??????? ||'|'||
NCRED_RSN???
from tbl_acct_201212;
spool off;
exit ; ?? ----------------------------------------------------------------------------------------------
Oracle通過sqlplus spool導出數據
spool常用的設置
set colsep' ';??? //域輸出分隔符
set echo off;??? //顯示start啟動的腳本中的每個sql命令,缺省為on
set feedback off;? //回顯本次sql命令處理的記錄條數,缺省為on
set heading off;?? //輸出域標題,缺省為on
set pagesize 0;?? //輸出每頁行數,缺省為24,為了避免分頁,可設定為0。
set termout off;?? //顯示腳本中的命令的執行結果,缺省為on
set trimout on;?? //去除標準輸出每行的拖尾空格,缺省為off
set trimspool on;? //去除重定向(spool)輸出每行的拖尾空格,缺省為off 注:LINESIZE要稍微設置大些,免得數據被截斷, 它應和相應的TRIMSPOOL結合使用防止導出的文本有太多的尾部空格。但是如果 LINESIZE設置太大,會大大降低導出的速度 。
SQL>set colsep' ';???? //-域輸出分隔符
SQL>set newp none??????????? //設置查詢出來的數據分多少頁顯示,如果需要連續的數據,中間不要出現空行就把newp設置為none,這樣輸出的數據行都是連續的,中間沒有空行之類的
SQL>set echo off;???? //顯示start啟動的腳本中的每個sql命令,缺省為on
SQL> set echo on?????????????? //設置運行命令是是否顯示語句
SQL> set feedback on;?????? //設置顯示“已選擇XX行”
SQL>set feedback off;????? //回顯本次sql命令處理的記錄條數,缺省為on即去掉最后的 "已經選擇10000行"
SQL>set heading off;???? //輸出域標題,缺省為on 設置為off就去掉了select結果的字段名,只顯示數據
SQL>set pagesize 0;????? //輸出每頁行數,缺省為24,為了避免分頁,可設定為0。
SQL>set linesize 80;????? //輸出一行字符個數,缺省為80
SQL>set numwidth 12;???? //輸出number類型域長度,缺省為10
SQL>set termout off;???? //顯示腳本中的命令的執行結果,缺省為on
SQL>set trimout on;?? //去除標準輸出每行的拖尾空格,缺省為off
SQL>set trimspool on;? //去除重定向(spool)輸出每行的拖尾空格,缺省為off
SQL>set serveroutput on;? //設置允許顯示輸出類似dbms_output
SQL> set timing on;????????? //設置顯示“已用時間:XXXX”
SQL> set autotrace on-;??? //設置允許對執行的sql進行分析
set verify off???????????????????? //可以關閉和打開提示確認信息old 1和new 1的顯示.?
ksh腳本處理:
Ruby代碼?
#!/bin/ksh??
DB_USER=scott ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #DB USER??
DB_PWD=tiger ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#DB PASSWORD??
DB_SERV=orcl??????????????????????????????? #DB SERVICE NAME??
returnMessage=`sqlplus -s $DB_USER/$DB_PWD@$DB_SERV<<EOF??
whenever sqlerror exit 1??
whenever oserror exit 2??
set pagesize 0 feedback off verify off heading off??
set time off echo off??
set pagesize 0??
set linesize 2000??
set trims on??
set feedback off??
set TERMOUT OFF??
alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';??
spool sp_test.txt??
select PK_ID || '|' ||GRID_ID || '...' from tmp_jy_sys_table_col;??
spool off??
/??
exit 3;??
EOF`?
#!/bin/ksh
DB_USER=tivan?????????????????????????????? #DB USER
DB_PWD=tivan?????????????????????????????? #DB PASSWORD
DB_SERV=orcl??????????????????????????????? #DB SERVICE NAME
returnMessage=`sqlplus -s $DB_USER/$DB_PWD@$DB_SERV<<EOF
whenever sqlerror exit 1
whenever oserror exit 2
set pagesize 0 feedback off verify off heading off
set time off echo off
set pagesize 0
set linesize 2000
set trims on
set feedback off
set TERMOUT OFF
alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';
spool sp_test.txt
select PK_ID || '|' ||GRID_ID || '...' from tmp_jy_sys_table_col;
spool off
/
exit 3;
EOF`
-EOF-
2. 導入txt格式的腳本
1.建一個ctl文件內容如下
load data
infile 'C:\Users\Administrator\Desktop\exp\gsyh.txt'
append into table JCPT_CompanyAnnouncement
fields terminated by '&&&' optionally enclosed by '\n'
trailing nullcols(
ID "SEQ_TEST.NEXTVAL" , --主鍵自動增長列
COMPANYID,
ANNOUNCEMENTDATE date"yyyy-mm-dd",
TITLE,
ABSTRACT,
THEME,
PUBLISHTIME? ???? date"yyyy-mm-dd hh24:mi:ss",
ENDATE,
BODY,
FILEURL,
FILEMD5
)?
2.建一個 bat 文件,linux 用sh文件 內容如下
sqlldr userid=developer/developer_ora__123_456@BankAssist control=C:\Users\Administrator\Desktop\exp\control.ctl log=C:\Users\Administrator\Desktop\exp\gdyh.log
3.這個目錄下弄個數據文件C:\Users\Administrator\Desktop\exp\gsyh.txt
導出一張表的數據,以',' 為分隔符 select * from pet ?into? outfile 'c:/pet.txt' ??fields terminated by ','?lines terminated by '\r\n'; select * from pet ?into? outfile 'c:/pet1.txt' ??fields terminated by ','??enclosed by '"'?lines terminated by '\r\n';
enclosed by '"' : 數據導出都是帶 引號的?"Fluffy","Harold","cat","f","1993-02-04"
導入一張表的數據,以',' 為分隔符 load data local infile 'c:/pet.txt' into table pet ?fields terminated by ',' ?lines terminated by '\r\n'
load data local infile 'c:/pet.txt' into table pet??fields terminated by ','??lines terminated by '\r\n'?(name,owner,species,sex,birth,death)?;
load data local infile 'c:/pet1.txt' into table pet ?fields terminated by ','?enclosed by '"'??lines terminated by '\r\n'; ?enclosed by'"' 導入帶引號?"Fluffy","Harold","cat","f","1993-02-04" 格式的數據
?注意: ()括號里面的字段可以控制導入的列數量
? 基本語法: load data [low_priority] [local] infile 'file_name txt' [replace | ignore]
into table tbl_name
[fields
[terminated by't']
[OPTIONALLY] enclosed by '']
[escaped by'\' ]
[lines terminated by'n']
[ignore number lines]
[(col_name, )] ? 1 如果你指定關鍵詞low_priority,那么MySQL將會等到沒有其他人讀這個表的時候,才把插入數據。可以使用如下的命令: load data low_priority infile "/home/mark/data sql" into table Orders;
2 如果指定local關鍵詞,則表明從客戶主機讀文件。如果local沒指定,文件必須位于服務器上。
3 replace和ignore關鍵詞控制對現有的唯一鍵記錄的重復的處理。如果你指定replace,新行將代替有相同的唯一鍵值的現有行。如果你指定ignore,跳過有唯一鍵的現有行的重復行的輸入。如果你不指定任何一個選項,當找到重復鍵時,出現一個錯誤,并且文本文件的余下部分被忽略。例如:
load data low_priority infile "/home/mark/data sql" replace into table Orders;
4分隔符
terminated by分隔符:意思是以什么字符作為分隔符
enclosed by字段括起字符
escaped by轉義字符 terminated by描述字段的分隔符,默認情況下是tab字符(\t)
enclosed by描述的是字段的括起字符。
escaped by描述的轉義字符。默認的是反斜杠(backslash:\ )
5.字符集
character set gbk;
這個字符集一定要寫,要不然就會亂碼或者只導入一部分數據。 load data local infile 'c:/pet1.txt' into table ?character set gbk?pet ?fields terminated by ','?enclosed by '"'??lines terminated by '\r\n';
二:Oracle導入數據load data infile用法
1. 輸出txt格式的腳本
set trimspool on
set linesize 40000
set pagesize 0
set newpage none --會在頁和頁面之間沒有任何間隔
set heading off?? --是否顯示列標題
set term off? --輸出的文件不會顯示在屏幕上,可以提高spool的速度
set feedback off? --是否顯示當前sql語句查詢或修改的行數
set trims on? --將spool輸出中每行后面多余的空格去掉
spool c:/s24_tbl_acct.txt
select XACCOUNT??????? ||'|'|| BANK ? ? ? ? ?? ||'|'|| BUSINESS ? ? ?? ||'|'|| CATEGORY??????? ||'|'||
NCRED_RSN???
from tbl_acct_201212;
spool off;
exit ; ?? ----------------------------------------------------------------------------------------------
Oracle通過sqlplus spool導出數據
spool常用的設置
set colsep' ';??? //域輸出分隔符
set echo off;??? //顯示start啟動的腳本中的每個sql命令,缺省為on
set feedback off;? //回顯本次sql命令處理的記錄條數,缺省為on
set heading off;?? //輸出域標題,缺省為on
set pagesize 0;?? //輸出每頁行數,缺省為24,為了避免分頁,可設定為0。
set termout off;?? //顯示腳本中的命令的執行結果,缺省為on
set trimout on;?? //去除標準輸出每行的拖尾空格,缺省為off
set trimspool on;? //去除重定向(spool)輸出每行的拖尾空格,缺省為off 注:LINESIZE要稍微設置大些,免得數據被截斷, 它應和相應的TRIMSPOOL結合使用防止導出的文本有太多的尾部空格。但是如果 LINESIZE設置太大,會大大降低導出的速度 。
SQL>set colsep' ';???? //-域輸出分隔符
SQL>set newp none??????????? //設置查詢出來的數據分多少頁顯示,如果需要連續的數據,中間不要出現空行就把newp設置為none,這樣輸出的數據行都是連續的,中間沒有空行之類的
SQL>set echo off;???? //顯示start啟動的腳本中的每個sql命令,缺省為on
SQL> set echo on?????????????? //設置運行命令是是否顯示語句
SQL> set feedback on;?????? //設置顯示“已選擇XX行”
SQL>set feedback off;????? //回顯本次sql命令處理的記錄條數,缺省為on即去掉最后的 "已經選擇10000行"
SQL>set heading off;???? //輸出域標題,缺省為on 設置為off就去掉了select結果的字段名,只顯示數據
SQL>set pagesize 0;????? //輸出每頁行數,缺省為24,為了避免分頁,可設定為0。
SQL>set linesize 80;????? //輸出一行字符個數,缺省為80
SQL>set numwidth 12;???? //輸出number類型域長度,缺省為10
SQL>set termout off;???? //顯示腳本中的命令的執行結果,缺省為on
SQL>set trimout on;?? //去除標準輸出每行的拖尾空格,缺省為off
SQL>set trimspool on;? //去除重定向(spool)輸出每行的拖尾空格,缺省為off
SQL>set serveroutput on;? //設置允許顯示輸出類似dbms_output
SQL> set timing on;????????? //設置顯示“已用時間:XXXX”
SQL> set autotrace on-;??? //設置允許對執行的sql進行分析
set verify off???????????????????? //可以關閉和打開提示確認信息old 1和new 1的顯示.?
ksh腳本處理:
Ruby代碼?
#!/bin/ksh??
DB_USER=scott ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #DB USER??
DB_PWD=tiger ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#DB PASSWORD??
DB_SERV=orcl??????????????????????????????? #DB SERVICE NAME??
returnMessage=`sqlplus -s $DB_USER/$DB_PWD@$DB_SERV<<EOF??
whenever sqlerror exit 1??
whenever oserror exit 2??
set pagesize 0 feedback off verify off heading off??
set time off echo off??
set pagesize 0??
set linesize 2000??
set trims on??
set feedback off??
set TERMOUT OFF??
alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';??
spool sp_test.txt??
select PK_ID || '|' ||GRID_ID || '...' from tmp_jy_sys_table_col;??
spool off??
/??
exit 3;??
EOF`?
#!/bin/ksh
DB_USER=tivan?????????????????????????????? #DB USER
DB_PWD=tivan?????????????????????????????? #DB PASSWORD
DB_SERV=orcl??????????????????????????????? #DB SERVICE NAME
returnMessage=`sqlplus -s $DB_USER/$DB_PWD@$DB_SERV<<EOF
whenever sqlerror exit 1
whenever oserror exit 2
set pagesize 0 feedback off verify off heading off
set time off echo off
set pagesize 0
set linesize 2000
set trims on
set feedback off
set TERMOUT OFF
alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';
spool sp_test.txt
select PK_ID || '|' ||GRID_ID || '...' from tmp_jy_sys_table_col;
spool off
/
exit 3;
EOF`
-EOF-
2. 導入txt格式的腳本
1.建一個ctl文件內容如下
load data
infile 'C:\Users\Administrator\Desktop\exp\gsyh.txt'
append into table JCPT_CompanyAnnouncement
fields terminated by '&&&' optionally enclosed by '\n'
trailing nullcols(
ID "SEQ_TEST.NEXTVAL" , --主鍵自動增長列
COMPANYID,
ANNOUNCEMENTDATE date"yyyy-mm-dd",
TITLE,
ABSTRACT,
THEME,
PUBLISHTIME? ???? date"yyyy-mm-dd hh24:mi:ss",
ENDATE,
BODY,
FILEURL,
FILEMD5
)?
2.建一個 bat 文件,linux 用sh文件 內容如下
sqlldr userid=developer/developer_ora__123_456@BankAssist control=C:\Users\Administrator\Desktop\exp\control.ctl log=C:\Users\Administrator\Desktop\exp\gdyh.log
3.這個目錄下弄個數據文件C:\Users\Administrator\Desktop\exp\gsyh.txt
總結
以上是生活随笔為你收集整理的mysqlOracle导入导出txt格式的数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计部门领导必备能力
- 下一篇: 爱可生开源mysql_爱可生开源社区官网