Oracle 11g -- 使用PLSQL进行excel、csv、txt文件的数据导入
1、导入 txt/csv 文件 (使用 Text Importer)
创建表结构:
create table student( id int, name varchar(255), birthday varchar(255), sex varchar(255) )
创建表数据-student.txt(分隔符为’\t’):
01 赵雷 1990-01-01 男
02 钱电 1990-12-21 男
03 孙风 1990-05-20 男
04 李云 1990-08-06 男
05 周梅 1991-12-01 女
06 吴兰 1992-03-01 女
07 郑竹 1989-07-01 女
08 王菊 1990-01-20 女
使用Text Importer导入工具:
然后点击下方的import进行导入。
遇到问题:
解决方法:
原始数据的日期是用”-”分隔开的,并不是默认的日期数字的形式,这里可以不使用to_date()进行转换,保留原来的格式即可。
再次import即可导入成功,查询数据如下:
注:如果有主键约束会自动覆盖掉相同键的记录
2、导入excel文件(excel转csv)
准备的excel文件如下:
清空Oracle中表student的数据:
truncate table student;
1)尝试导入一:使用ODBC Importer导入工具
User/System DSN中没有选项,并且出现问题:
解决过程(fail了):
自己电脑是64位系统,而ODBC数据源管理程序是32位的,
需要手动添加新excel数据源DSN驱动:
运行C:\Windows\SysWOW64\odbcad32.exe
点击添加,选择如下图所示Microsoft Excel Driver(*.xls)
但是重启PLSQL或是服务之后还是识别不到新增的驱动。
2)尝试导入二(fail):使用WPS将excel直接转txt
无论转换成 Unicode文本格式 还是 文本文件(制表符分隔)格式的文本文件都识别不出。
3)尝试导入三:使用WPS将excel转csv
excel文件另存为csv文件后即可直接使用Text Importer转换了。
4)期间遇到的问题:
导入时发现Text Importer报以下警告:
并且可以发现导入后数据全部为null,也就是说Oracle11g不支持UTF16格式。
解决方法参考:http://www.myexceptions.net/program/1047444.html
- 打开直接转完的txt文件,复制其内容到新的txt文件中即可
- Java代码将UTF16转成UTF8格式