mssql server 导入oracle的方法之一

来源:互联网 发布:电子数据交换技术ppt 编辑:程序博客网 时间:2024/06/05 00:13

一、采用bcp导出为文本文件,sqlldr导入Oracle的方式

1.导出数据

bcp {[[database_name.][owner].]{table_name | view_name} | "query"}
    {in | out | queryout | format} data_file
    [-m max_errors] [-f format_file] [-x] [-e err_file]
    [-F first_row] [-L last_row] [-b batch_size]
    [-n] [-c] [-N] [-w] [-V (70 | 80 | 90 )]
    [-q] [-C { ACP | OEM | RAW | code_page } ] [-t field_term]
    [-r row_term] [-i input_file] [-o output_file] [-a packet_size]
    [-S server_name[\instance_name]] [-U login_id] [-P password]
    [-T] [-v] [-R] [-k] [-E] [-h"hint [,...n]"]

bcp Sourcedb.dbo.inneruser out "文件路径" -S"实例名" -U用户名 -P"密码" -c -e"D:\inneruser.err" -t";" -r";\n"

-t 指明字段分割符 -r 指明 换行符


2.拷贝文件到oracle服务器目录下。


3.创建控制文件

load data
infile '/opt/oradata/inneruser.dat'
into table inneruser
append
fields terminated by ';'
(InnerUserID,WorkID,UserName,"Password",Kind,isValid,"Level",IsOnline,GroupID,DepartmentID,CTime"to_date(substr(:CTime,0,19),'yyyy-mm-dd hh24:mi:ss')" ,UTime"to_date(substr(:UTime,0,19),'yyyy-mm-dd hh24:mi:ss')",YWBH_C,IsLeader,TeamID,RtxAccount)

表中有特殊字段时,用"",日期字段指定日期格式。报错时可以查看对应目录下的log文件

(1)append 表示表中有数据,加在后面
(2)INSERT 表示装入空表,有数据则停止。默认值
(3)REPLACE 原先表中如果有数据,会被删除
(4)TRUNCATE 如果要载入的数据与现在的数据相同,载入的数据替换现存的数据。

 

4.导入

sqlldr 用户名/密码@全局数据库 control=/opt/oracle/inneruser.ctl


--报错,字段类型错误
Commit point reached - logical record count 62
通常为日期字段,请参照上面的指定日期格式。

 

 

Oracle Sql Loader中文字符导入乱码的解决方案
服务器端字符集NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

控制文件ctl:
LOAD DATA
CHARACTERSET ZHS16GBK
INFILE 'c:\testfile.txt'
id name desc

FIELDS TERMINATED BY ","
(id,name ,desc )

导入成功

其中c:\testfile.txt文件中有中文,在将此文件导入到oracle数据库中时,需要设置字符集CHARACTERSET ZHS16GBK
 
(1)查看服务器端字符集
通过客户端或服务器端的sql*plus登录ORACLE的一个合法用户,执行下列SQL语句:
SQL > select * from V$NLS_PARAMETERS
------------------------
(2)控制文件ctl:
LOAD DATA
CHARACTERSET ZHS16GBK
INFILE '/inffile/vac/subs-vac.csv'
TRUNCATE
INTO TABLE INF_VAC_SUBS_PRODUCT
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
USER_NUMBER,
PRODUCT_ID,
EFFECTIVE_DATE
DATE "YYYY/MM/DD HH24:MI:SS",
EXPIRATION_DATE DATE "YYYY/MM/DD HH24:MI:SS"
)

 

原创粉丝点击