将查询结果按照in的内容进行排序

     今天客户发来一个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文件,查看数据是否全部导入,是否导入成功. 

猜你喜欢

转载自ifox.iteye.com/blog/1830517