在VB中,如何将大量数据快速写入SQL server数据库?求速度!!!

时间:2022-09-21 19:08:25
我用ADO控件试过多种方法,但写入数据库的速度实在太慢,敬请指教!!

12 个解决方案

#1


做成存储过程,再把所有的要写入数据库的记录,集合成字符串,发到SQL内让SQL Server自动执行处理

#2


什麼樣的環境下。沒有環境,沒得談

#3


是呀,你的数据来源呢?如果从Excel里获取,建议读一行写一行,不占用内容,如果是从TXT中读取,也是按块或标志符读取,写一串,写一行,效率较高。

#4


不要采用SQL语句执行的方式写数据库
为什么呢?
这是因为你用SQL语句执行,就等于进行了

打开数据库连接
执行临时SQL语句
写入数据库

这样一次过程

如果循环使用SQL语句执行insert into,就会不停的重复上述过程。

那么用

rs.open
'循环
re.value=""
'循环结束
rs.update



这种方式呢?
我们就省略了很多次打开数据库和关闭数据库。
速度会有明显的提升。

#5


抱歉,上次没写清楚。我的开发环境是VB6.0,数据来源是硬盘上的二进制文件(存放的是大量的数据采集结果),我先把二进制文件分批读到数组中,再写入SQL数据库。

#6


不仅是写入慢,可能处理那堆二进制文件也快不到哪去。

#7


我用timeGettime()函数跟踪检测过,处理二进制文件很快,但写数据库的速度奇慢(1M数据大概要10分钟左右).

#8


分块读取,分块写

#9


把写数据的操作放在同一个事务中去执行(前提是数据库支持事务)。

#10


我是把二进制文件分批读到数组中的,不就是按块吗。经实测,往数据库写入一条记录的平均时间是1.3ms左右,慢在“写”操作!能提速吗?xomix先生建议用VBScript code,效率怎样?能否说的详细点?我没接触过VBScript!

#11


是远程数据库?还是本机数据库?

如果是远程的,网络速度也是一个挺大的问题。

另外,您写的数据是到 二进制字段 中吧,写到 这种字段中的确会很慢,如果数据量大,有时还写不进去。

#12


用ActivcX编一个写数据库的程序,用主程序调用多个ActivcX Exe对象,也就是说用多进程来进行网络传输写数据库(每个完成一部分),这种方法对速度的提高应较明显。

#1


做成存储过程,再把所有的要写入数据库的记录,集合成字符串,发到SQL内让SQL Server自动执行处理

#2


什麼樣的環境下。沒有環境,沒得談

#3


是呀,你的数据来源呢?如果从Excel里获取,建议读一行写一行,不占用内容,如果是从TXT中读取,也是按块或标志符读取,写一串,写一行,效率较高。

#4


不要采用SQL语句执行的方式写数据库
为什么呢?
这是因为你用SQL语句执行,就等于进行了

打开数据库连接
执行临时SQL语句
写入数据库

这样一次过程

如果循环使用SQL语句执行insert into,就会不停的重复上述过程。

那么用

rs.open
'循环
re.value=""
'循环结束
rs.update



这种方式呢?
我们就省略了很多次打开数据库和关闭数据库。
速度会有明显的提升。

#5


抱歉,上次没写清楚。我的开发环境是VB6.0,数据来源是硬盘上的二进制文件(存放的是大量的数据采集结果),我先把二进制文件分批读到数组中,再写入SQL数据库。

#6


不仅是写入慢,可能处理那堆二进制文件也快不到哪去。

#7


我用timeGettime()函数跟踪检测过,处理二进制文件很快,但写数据库的速度奇慢(1M数据大概要10分钟左右).

#8


分块读取,分块写

#9


把写数据的操作放在同一个事务中去执行(前提是数据库支持事务)。

#10


我是把二进制文件分批读到数组中的,不就是按块吗。经实测,往数据库写入一条记录的平均时间是1.3ms左右,慢在“写”操作!能提速吗?xomix先生建议用VBScript code,效率怎样?能否说的详细点?我没接触过VBScript!

#11


是远程数据库?还是本机数据库?

如果是远程的,网络速度也是一个挺大的问题。

另外,您写的数据是到 二进制字段 中吧,写到 这种字段中的确会很慢,如果数据量大,有时还写不进去。

#12


用ActivcX编一个写数据库的程序,用主程序调用多个ActivcX Exe对象,也就是说用多进程来进行网络传输写数据库(每个完成一部分),这种方法对速度的提高应较明显。