将一个excel表导入sql server,通过web,理论上最快每秒可以导入多少条
- opensesame有个excel表,有21列,每个sheet大概有不到10w条记录导入过程还需要对比,比如sheet里的第二列,跟现有的一张表(表A)里的值对比,如果存在就直接导入这行记录,否则还要在这个表A里先增加一条新记录
因为导入到数据库后,第二列数据不是直接显示值,而是显示表A对应的FID
我不知道这个web后台是什么写的,可能是jsp或asp,导入速度每秒只有100条左右,不知道是不是正常,如果不正常我打算尝试自己写一个,我觉得就是循环读取这个excel的记录,然后逐条写入数据库,不应该这么慢。 - zhenyue我觉得你就是那种在循环里写SQL 的程序员
- GeBron从 excel 读一条数据,就要去表A匹配一下第二列的数据?
- zsdicky之前试过将股票软件几年的数据下载Excel格式,然后用Delphi编了个小程序转到SQL
- IAmThrilling要看log,瓶颈是在数据库写入还是程序坐循环判断,按理说写入可以是一次性点吧,斗判断好了一次搞定
- opensesame我又不是专业码农。有什么好的方法么 这批数据我倒一次都可以睡一觉了
- Pyrrhus先把所有数据导入到临时表,然后用sql梳理数据,100w数据基本上应该5秒以内
- songco看起来可能是一条数据一个transaction 导致的
一批一个transaction会快很多 - zhenyue我觉得你现在用的这个程序, 很可能就是一条条循环出来的。
正常来说半分钟之内一次性导入。 - happyd8699先全部导入,然后再把表A中没有的值添加上
- opensesame会的,不过我也只能理解到这一层,真正的批量导入应该怎么实现呢HiPDA·NG
- opensesame不对比也一样慢,应该就是大家说的一个导入方式不对,效率低HiPDA·NG
- loveitmac和你A表的数据量大小和程序导入方式有关系。
- zhenyueEXCEL导入数据库里的一张临时表。
然后数据库一条SQL 结果就出来了。 - eCool肯定是没有用批量执行sql了,10w数据,批量的话,不需要多久 iOS fly ~
- opensesame我能理解的也是循环这个excel插入sql server,就是说正确的方式应该是全部读取后批量一次性写入对吗,有什么关键词我学习下HiPDA·NG
- happyd8699BULK INSERT 应该最快,从一个文本文件中读取数据,插入表
- opensesame谢谢各位,晚上我学习下HiPDA·NG
- opensesame太神奇了,按照教程用BULK INSERT,插入几万条测试数据几乎瞬时完成,不过还没用到工作中,还要继续学习
(1036800 行受影响) 用了5秒钟
更新一下,早上要到了源代码,古老的asp写的,我大概能看懂,asp里用一个无组件上传功能,上传本地的excel文件到服务器,然后逐行地区数据,判断,符合导入规则的再导入,也就是之前说的一行一行的插入,
我自己测试的时候,是用的txt文件,用tab键分割列,所以代码是
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n'
那么对于这个excel文件,要怎么写呢,好像只能用csv文件 - opensesame继续问,看资料只能导入txt和csv.现在把xls文件另存csv可以导入,但是遇到有逗号的怎么办呢HiPDA·NG
- sunrainx
- opensesame其他同事只会在页面上点点按钮来操作HiPDA·NG