寻求批量插入远程数据的方案解决办法
寻求批量插入远程数据的方案
需要将数据批量插入远程服务器,远程服务器是SQL,用什么方案效率最高、速度最快?
例如:本地数据有10000条,
日期 品名 数量
2012.06.06 中华牙膏 20
2012.06.06 白玉牙膏 50
。。。
。。。
。。。
我用如下代码测试了一下,上当了,等了半小时多!!
?sqlstringconnect("Driver=SQL Server;Server=192.168.0.2;Address=XX.XX.XX.XX,1500;Network=dbmssocn;Database=yjtest;Uid=wxj;Pwd=123")
SET TALK off
FOR i=1 TO 10000
SQLEXEC(1,"insert into ydj values('2012.06.06','阿莫西林',12)")
endf
SET TALK on
RETURN
然后我改一下,记录了时间,300条记录花了70秒
我的网络上行速率是512K
什么方案效率高?应该在哪些方面进行优化?比如说充分利用字节长度等等
有可能同时多个站点上传数据,这样会不会死人?
------解决方案--------------------
如果 sql server 所在服务器安装了 ftp,那就先将数据整理成符合字段顺序的格式化文本文件,上传文件,再导入 sql server
ftp 传文件就不用说了,只说说导入 sql server
最快的应该是 bulk insert 命令了,简化的语法是这样的:
完整的语法是:
需要将数据批量插入远程服务器,远程服务器是SQL,用什么方案效率最高、速度最快?
例如:本地数据有10000条,
日期 品名 数量
2012.06.06 中华牙膏 20
2012.06.06 白玉牙膏 50
。。。
。。。
。。。
我用如下代码测试了一下,上当了,等了半小时多!!
?sqlstringconnect("Driver=SQL Server;Server=192.168.0.2;Address=XX.XX.XX.XX,1500;Network=dbmssocn;Database=yjtest;Uid=wxj;Pwd=123")
SET TALK off
FOR i=1 TO 10000
SQLEXEC(1,"insert into ydj values('2012.06.06','阿莫西林',12)")
endf
SET TALK on
RETURN
然后我改一下,记录了时间,300条记录花了70秒
我的网络上行速率是512K
什么方案效率高?应该在哪些方面进行优化?比如说充分利用字节长度等等
有可能同时多个站点上传数据,这样会不会死人?
------解决方案--------------------
如果 sql server 所在服务器安装了 ftp,那就先将数据整理成符合字段顺序的格式化文本文件,上传文件,再导入 sql server
ftp 传文件就不用说了,只说说导入 sql server
最快的应该是 bulk insert 命令了,简化的语法是这样的:
BULK INSERT 被插入表名
FROM 'C:\数据文件.txt'
WITH
(
FIELDTERMINATOR = ",", -- 指定逗号作为字段分隔符,默认是制表符 \t
ROWTERMINATOR = "\n" -- 指定 回车符号作为 行分隔符,默认是 \r\n
)
完整的语法是:
BULK INSERT
[ database_name . [ schema_name ] .
------解决方案--------------------
schema_name . ] [ table_name
------解决方案--------------------
view_name ]
FROM 'data_file'
[ WITH
(
[ [ , ] BATCHSIZE = batch_size ]
[ [ , ] CHECK_CONSTRAINTS ]
[ [ , ] CODEPAGE = { 'ACP'
------解决方案--------------------
'OEM'
------解决方案--------------------
'RAW'
------解决方案--------------------
'code_page' } ]
[ [ , ] DATAFILETYPE =
{ 'char'
------解决方案--------------------
'native'
------解决方案--------------------
'widechar'
------解决方案--------------------
'widenative' } ]
[ [ , ] FIELDTERMINATOR = 'field_terminator' ]
[ [ , ] FIRSTROW = first_row ]
[ [ , ] FIRE_TRIGGERS ]
[ [ , ] FORMATFILE = 'format_file_path' ]
[ [ , ] KEEPIDENTITY ]