免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: tigerfish
打印 上一主题 下一主题

[求助]如何以最快的速度插入数据? [复制链接]

论坛徽章:
0
31 [报告]
发表于 2003-07-10 22:51 |只看该作者
itsyh,看来我的IO方面知识不够。今后还要向你多学习,我就是你的弟子了。:)
对了,我目前用的也是Java和JB,今后还可多交流。

一般的DML语句都是要写日志的,而bcp只是一个命令程序,因此它是不会写日志的。

实时系统的数据处理问题何不用MSSQL中的订阅和发布来做?

论坛徽章:
0
32 [报告]
发表于 2003-07-10 23:01 |只看该作者
最初由 zhuzhichao 发布
[B]itsyh,对了,我目前用的也是Java和JB,今后还可多交流。

一般的DML语句都是要写日志的,而bcp只是一个命令程序,因此它是不会写日志的。[/B]

zhuzhichao 老大啊,不知道在java中怎么调用“BCP”啊?我真的找不到资料啊,5555555

给我弄一个java程序我学学,嘻嘻,多谢!!

java我是初学者,不太懂的说,以后多多指教:)


[B]实时系统的数据处理问题何不用MSSQL中的订阅和发布来做? [/B]

这个冬冬又是怎么弄呢?能说说么?多谢!

论坛徽章:
0
33 [报告]
发表于 2003-07-10 23:29 |只看该作者
你先做一个将表中数据写成.txt文件的例子就明白了:
新做一个.bat文件叫sysobjects.bat,里面写入如下的代码:
bcp master.dbo.sysobjects out d:\\sysobjects.txt -S此处填DB服务器的ip -Usa -P此处填sa用户的密码 -c

然后在你的Java程序中写下这样的代码,运行后就可在d驱上生成sysobjects.txt文件了:
java.lang.Runtime.getRuntime().exec(\"d://sysobjects.bat\";


这么晚了还不睡?
我要先休息了,订阅发布的事明天再说吧。

论坛徽章:
0
34 [报告]
发表于 2003-07-11 09:07 |只看该作者
最初由 zhuzhichao 发布
[B]你先做一个将表中数据写成.txt文件的例子就明白了:
新做一个.bat文件叫sysobjects.bat,里面写入如下的代码:
bcp master.dbo.sysobjects out d:\\sysobjects.txt -S此处填DB服务器的ip -Usa -P此处填sa用户的密码 -c

然后在你的Java程序中写下这样的代码,运行后就可在d驱上生成sysobjects.txt文件了:
java.lang.Runtime.getRuntime().exec(\"d://sysobjects.bat\";


这么晚了还不睡?
我要先休息了,订阅发布的事明天再说吧。 [/B]

多谢!这都行,不错!!我试试:)3Q!!

论坛徽章:
0
35 [报告]
发表于 2003-07-11 09:29 |只看该作者
试验完毕,嘿嘿,这个方法简直是没法说,速度太快了,嘿嘿~~~~
241ms就轻松导入1万条数据,太感谢上面各位帮助我的朋友了!

C:\\>bcp qw.dbo.test in c:\\1.txt -S qw -U sa -P sa -c

开始复制...
1000 列送到 SQL Server。合计送出: 1000
1000 列送到 SQL Server。合计送出: 2000
1000 列送到 SQL Server。合计送出: 3000
1000 列送到 SQL Server。合计送出: 4000
1000 列送到 SQL Server。合计送出: 5000
1000 列送到 SQL Server。合计送出: 6000
1000 列送到 SQL Server。合计送出: 7000
1000 列送到 SQL Server。合计送出: 8000
1000 列送到 SQL Server。合计送出: 9000
1000 列送到 SQL Server。合计送出: 10000

已复制了 10000 行。
数据包的大小(字节): 4096
时钟时间(毫秒): 共    241

论坛徽章:
0
36 [报告]
发表于 2003-07-11 09:45 |只看该作者
不知道各位还有没有兴趣继续讨论啊?呵呵,很好玩哦!

1、如何控制导入的完整性?比如,数据TXT包含有不符合规格的数据,导入出错了,该怎么办?这个冬冬能加上事务处理么?也就是说出错的话,能回滚回导入之前的状态么?

我的目前想到的方法是判断其输出结果来一行行的判断,还有没有更好的方法?
开始复制...
SQLState = 22008, NativeError = 0
Error = [Microsoft][ODBC SQL Server Driver]无效的数据格式
1000 列送到 SQL Server。合计送出: 1000
1000 列送到 SQL Server。合计送出: 2000
1000 列送到 SQL Server。合计送出: 3000
1000 列送到 SQL Server。合计送出: 4000
1000 列送到 SQL Server。合计送出: 5000
1000 列送到 SQL Server。合计送出: 6000
1000 列送到 SQL Server。合计送出: 7000
1000 列送到 SQL Server。合计送出: 8000
1000 列送到 SQL Server。合计送出: 9000

已复制了 9999 行。
数据包的大小(字节): 4096
时钟时间(毫秒): 共    260

论坛徽章:
0
37 [报告]
发表于 2003-07-11 09:49 |只看该作者
呵呵 既然 BCP 能够满足速度要求,那就先用哦
至于 transaction ,BCP  本声不记日志 怎么能够保证数据完整性呢,这方面的要求,就要靠你写一个加载日志来处理哦

论坛徽章:
0
38 [报告]
发表于 2003-07-11 09:59 |只看该作者
2、to xuanxuan:不知道你对实时数据库熟悉么?有没有什么物廉价美的产品推荐给我几个?
3、to xuanxuan:
向数据库直接提交数据,整体速度肯定比分步提交快。也不一定要 bcp
我开始只是说如果使用bcp单位时间的数据加载速度可能是最快的

——好啊,只是不知道如何通过程序来控制啊?能给我个Demo学学么?3Q!!
4、to xuanxuan:
所以 建议你直接使用mssql插数据,如果出现问题,再改进程序 或方法也可以。只要业务逻辑
没有变化,应该改动不大

——不知道这个是如何理解?不太懂,如何才能直接使用mssql插数据?
5、如何控制日志文件的记录操作?也就是如何去掉那些不必要的日志记录操作?以加快操作速度?
6、“实时系统的数据处理问题何不用MSSQL中的订阅和发布来做?”
——这个冬冬又是怎么弄呢?能说说么?多谢!
7、
至于 transaction ,BCP 本声不记日志 怎么能够保证数据完整性呢,这方面的要求,就要靠你写一个加载日志来处理哦

——这个加载日志是否就是我自己写程序来处理其输出结果?或者是其他?

论坛徽章:
0
39 [报告]
发表于 2003-07-11 10:47 |只看该作者
呵呵 我不熟悉 REAL-TIMEdatabase    据说这些数据库主要用于
工业现场数据采集系统中,比如化工、自动化设备监控等
你自己 google 看看

我想问一下,你对于数据插入的速度到底有什么要求,按照你的说法 这些数据不可能是人工输入的,否则不管人输入多快 计算机都能处理,如果是其他系统的数据导入,速度这么重要吗?

我意思是你直接 在程序中 insert 应该没什么太大的问题

去掉记录日志的步骤,只有 BCP 以及 select into  可以,不过后者可能不合适

订阅与发布是保证多个数据库中数据同步复制的,跟 RTB 好象没什么直接关系

加载数据日志,就是记录一下每次加载数据的开始数据、、截止数据、成功与失败情况  至于怎么保证完整 ,实在要求的话
还是只能够用 MSSQL 本身的功能,自己写肯定不好


——这个加载日志是否就是我自己写程序来处理其输出结果?或者是其他?

论坛徽章:
0
40 [报告]
发表于 2003-07-11 13:47 |只看该作者
多谢xuanxuan:)我们也在尝试用实时数据库,但是价格实在太贵(几百万人民币),所以,打算另辟新径。

如果是其他系统的数据导入,速度这么重要吗?
——对阿,我们有很多数据采集器在高速度的采集数据,所以速度是目前最大的问题,不过从上面的讨论,这个已经不是问题了:)从22秒变到2秒不到,实在是一个飞跃!

我意思是你直接 在程序中 insert 应该没什么太大的问题
——这个我尝试了,如果这样来的话,1万条数据要超过80秒中才能插入完毕,所以放弃这个方法了。

去掉记录日志的步骤,只有 BCP 以及 select into 可以,不过后者可能不合适
——是的,看来只能bcp了:)

订阅与发布是保证多个数据库中数据同步复制的,跟 RTB 好象没什么直接关系
——哦,我的数据是实时采集的,可能是不能订阅与发布了:)

多谢你们!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP