Oracle导入外部文件

时间:2021-12-02 06:38:55

一.使用PL/SQL的导入工具导入excel文件
1.打开pl/sql,点击菜单栏中的T00LS->ODBC Imtorper,打开ODBC Importer选项框;
2.在Data fromODBC页中选择需要导入的文件的格式,选择ExcelFiles.输入用户名密码。然后点击Connect;
3.在跳出的选择工作簿对话框,选择所要导入的Excel文件,点击确定;
在出现的Table/Query中的Import Table中单击表名,可以在下方的ResultPreview中看到所要导入的表格的内容;
4.点击Date to Oracle按钮,打开Date to Oracle选项框,选则你要导入的表名,
本次导入表为SFISM4.U_RF_ID_DATA,在Owner下拉菜单中选SFISM4,在Table下拉菜单选择U_RF_ID_DATA,在Fields选则你要导入的字段,本次导入的字段是SERIAL_NUMBER,点击Import将成批数据导入Oracle数据库中,这样就完成了导入数据。

二.使用sqlldr导入txt文件
1.写控制文件
load data
infile 'C:/Users/Administrator/Desktop/ctl.txt'
append into table test
fields terminated by '|'
(
SEQ,
NAME,
NAME_BUSI,
NAME_ACCOUNT,
ACCOUNT,
BANK_NAME
)

2.在dos窗口输入命令
C:\Users\Administrator>sqlldr userid=username/passwd@sd control=C:\Users\Administrator\Desktop\sql.ctl,
(注:其中userid=用户名/用户密码@数据库实例的本地服务命名。)
在一开始运行这句话的时候,报错:
SQL*Loader-704: 内部错误: ulconnect: OCIServerAttach [0]
ORA-12154: TNS: 无法解析指定的连接标识符
后来发现有两个tnsnames.ora文件,一个属于oralceClient的,一个属于oracleDataBase的,平时的数据库实例本地配置都是写在oralceClient
下的tnsnames.ora中,于是将oralceClient下的tnsnames.ora内容复制到oracleDataBase下的tnsnames.ora中,上述命令便运行成功了。
虽然导入成功了,但是导入的数据不完整,且中文乱码。运行select * from nls_database_parameters和select * from nls_instance_parameters
发现nls_database_parameters中的字符集为ZHS16GBK,而导入的txt文件字符集为utf8,于是在Notepad++只能将txt文件转换为ANSI(GBK)编码后,
即导入正确。

附:ANSI编码
为使计算机支持更多语言,通常使用 0x80~0xFFFF 范围的 2 个字节来表示 1 个字符。比如:汉字 '中' 在
中文操作系统中,使用 [0xD6,0xD0] 这两个字节存储。
不同的国家和地区制定了不同的标准,由此产生了 GB2312、GBK、GB18030、Big5、Shift_JIS 等各自的编码标准。
这些使用多个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。
在简体中文Windows操作系统中,ANSI 编码代表 GBK 编码;在繁体中文Windows操作系统中,ANSI编码代表Big5;
在日文Windows操作系统中,ANSI 编码代表 Shift_JIS 编码。
不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。
ANSI编码表示英文字符时用一个字节,表示中文用两个或四个字节。