? ? ?今天客户发来一个excel表,内容不多,就两列,一列是车牌号,一列是设备号,让我帮忙导出设备号的相关信息(如出厂日期、手机号、设备名称了等等),开始把数据copy到nodepad++中整理个。以为用个in就可以了,查询完成后发现,用in之后我把查询结果拷贝回来的时候数据就对不齐了。
? ? ?google了下,说也没什么好的办法。唯独的办法是创建一张临时表将这些数据插入到临时表中,然后再查询。原文出处 ?http://www.itpub.net/thread-120567-1-1.html。想了下发现确实是个好办法。于是乎就新建了一张表,两个字段使用plsql将excel导入进去,导入步骤为。
tools、ODBC Importer,在弹出的页面中,将user/System DSN中选择Excel Files,输入用户名密码,点击Connect就会弹出让你选择Excel的位置,选择好文件,再选择Data to Oracle先项卡,选择所有者、要导入的表。将Excel中要导入的字段与数据库字段设置好点击导入即可,非常方便、人性化。数据类型一定要选择不然会提示失败。
? ? 接下来进行查询即可,我在查询过程中使用A left join B,A表中是1398条记录,结果查询出来的时候是1400条,想想使用left join应该不会出现这种情况。后来用sql测试查询了下,发现是A表与B表中关联的字段,B表在在不只一个。恍然大悟哈
?
?
附另外一种Excel的导入方法,我觉得挺好的。
?
1、创建SQL*Loader输入数据所需要的文件,均保存到C:\,用记事本编辑:?
? ? ? ? ? 控制文件:input.ctl,内容如下:?
? ? ? ? ??? ? ? ? ??load?data ?? ? ? ? ??? ? ? ? ?? ??--1、控制文件标识?
? ? ? ? ??? ? ? ? ??infile?'test.txt' ?--2、要输入的数据文件名为test.txt?
? ? ? ? ??? ? ? ? ??append?into?table?test --3、向表test中追加记录?
? ? ? ? ??? ? ? ? ??fields?terminated?by?X'09' --4、字段终止于X'09',是一个制表符(TAB)?
? ? ? ? ??? ? ? ? ??(id,username,password,sj) -----定义列对应顺序?
? ? ? ? ??a、insert,为缺省方式,在数据装载开始时要求表为空?
? ? ? ? ??b、append,在表中追加新记录?
? ? ? ? ??c、replace,删除旧记录,替换成新装载的记录?
? ? ? ? ??d、truncate,同上?
7、在DOS窗口下使用SQL*Loader命令实现数据的输入?
C:\>sqlldr?userid=system/manager?control=input.ctl?
默认日志文件名为:input.log?
默认坏记录文件为:input.bad?
如果是远程对数据库进行导入操作,则输入字符串应改为:?
C:\>sqlldr?userid=system/manager@serviceName_192.168.1.248?control=input.ctl?
8、连接到SQL*Plus中,查看是否成功输入,可比较input.log与原test.xls文件,查看数据是否全部导入,是否导入成功.?