当前位置:操作系统 > Unix/Linux >>

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

将查询结果按照in的内容进行排序
 
     今天客户发来一个excel表,内容不多,就两列,一列是车牌号,一列是设备号,让我帮忙导出设备号的相关信息(如出厂日期、手机号、设备名称了等等),开始把数据copy到nodepad++中整理个。以为用个in就可以了,查询完成后发现,用in之后我把查询结果拷贝回来的时候数据就对不齐了。
     google了下,说也没什么好的办法。唯独的办法是创建一张临时表将这些数据插入到临时表中,然后再查询。于是乎就新建了一张表,两个字段使用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文件,查看数据是否全部导入,是否导入成功. 
 
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,