得了...还是中文吧...写英的除了我没人愿意看...
今天写一点最近做的一个东西中得到的一个方法...
需求:服务器在运行过程中会产生Log文件,记录在日常工作中的各种操作,现在的工作是需要根据这个日志文件进行分析,分析出一些在日常工作中的信息。
思路:要分析数据,最好的办法莫过于将数据导入数据库,然后对数据库里的数据进行分析。
但是如果你试图通过读取文件的方法将数据一条一条的读取然后insert到数据库中...
~~~mygod我转40w条数据得一个多小时...没有哪个客户有这个耐心,也会耽误你自己的时间
那么,如果将一个文本文件导入数据库呢...
数据库提供了一个导入导出文本文件的工具,你当然可以直接使用
但如果在软件例如在C++ Builder里使用呢
我们先尝试在查询分析器中使用
我查阅出的方法是使用bcp...
语句:
EXEC master..xp_cmdshell 'bcp DateBaseName..TableName in "FilePath" -c -t"CompartSign" -S"ServerName" -U"UserName" -P"Password"'
当然还有别的一些参数,具体可以参阅Sql帮助文档,或者在运行cmd后直接敲bcp查看帮助
bcp实际上是Windows内部的命令,应该是DOS下的,具体我也不是很清楚
看这条语句:EXEC master..xp_cmdshell
意思是调用操作系统的 xp_cmdshell运行后面的语句
-t"CompartSign" 是表示这个文本文件是用什么分隔符隔开的
然后其实还可以用其他的,例如你可以写一个格式文件然后调用
具体如何我也不知道了...
ai其实我也想去学,但时间问题解决了这个问题之后要迅速进入下一个...就留待以后再说了
然后如何在C++ Builder里运行呢...
我是使用的这样的方法:
我创建了一个bat文件,然后将语句写入这个文件
注意:这里的bat里写入的文件仅为
bcp DateBaseName..TableName in "FilePath" -c -t"CompartSign" -S"ServerName" -U"UserName" -P"Password"
因为你直接执行bat就是在Windows里,不像在Sql里执行需要调用操作系统的命令
然后ShellExecute执行这个bat文件就ok了
插入40w条数据大概是在7分钟
效率高很多了~~~
可我还是不是很满意...暂时先这样吧~
好像还有其他的方法的,用什么bulk好像...
today~~over
PS:调用dos命令不分软件的~~都是大致相同