将查询结果按照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文件,查看数据是否全部导入,是否导入成功.