悬赏主题

[发布] 教你几个用BULK INSERT命令导入数据的小窍门

补充资料

教你几个用BULK INSERT命令导入数据的小窍门
)T#V"r0q.E$q$W#XDiscuz!插件风格中心,Discuz插件,dz插件,Discuz风格,dz风格,Discuz!教程,DZ风格教程,DZ插件教程,一键安装,一键卸载,第三方,插件作者,风格作者,协作开发,站长,建站,php,Discuz!支持团队,Discuz! Support Team  如果你从事与数据库相关的工作,有可能会涉及到将数据从外部数据文件插入倒SQL Server的操作。本文将为大家演示如何利用BULK INSERT命令来导入数据,并讲解怎样通过改变该命令的一些选项以便更方便且更有效地插入数据。
.J$y6o'f0]:^$i!J网络软件第三方及站长交流论坛 | Discuz!插件风格中心服务论坛
6y!Z._0d1|Discuz!插件风格中心,Discuz插件,dz插件,Discuz风格,dz风格,Discuz!教程,DZ风格教程,DZ插件教程,一键安装,一键卸载,第三方,插件作者,风格作者,协作开发,站长,建站,php,Discuz!支持团队,Discuz! Support Team  BULK INSERT
"H;a$U2c&j!V)I6A n0e17DST.com 致力于Discuz!插件、风格作者等第三方发展,拥有Discuz!插件风格中心(DAC),一键安装和卸载Discuz!插件及Discuz!风格。以协作开发论坛来保护作者版权并鼓励协作开发。并帮助中小站长发展。是Discuz!官方认可和推荐的站长和作者的交流平台。网络软件第三方及站长交流论坛 | Discuz!插件风格中心服务论坛-X5^8Y&T'c+z9i
  在SQL Server中,BULK INSERT是用来将外部文件以一种特定的格式加载到数据库表的T-SQL命令。该命令使开发人员能够直接将数据加载到数据库表中,而不需要使用类似于Integration Services这样的外部程序。虽然BULK INSERT不允许包含任何复杂的逻辑或转换,但能够提供与格式化相关的选项,并告诉我们导入是如何实现的。BULK INSERT有一个使用限制,就是只能将数据导入SQL Server。网络软件第三方及站长交流论坛 | Discuz!插件风格中心服务论坛:b/e4Z)Y$t/|7_

(Y A)S#?6`17DST.com 致力于Discuz!插件、风格作者等第三方发展,拥有Discuz!插件风格中心(DAC),一键安装和卸载Discuz!插件及Discuz!风格。以协作开发论坛来保护作者版权并鼓励协作开发。并帮助中小站长发展。是Discuz!官方认可和推荐的站长和作者的交流平台。  插入数据下面的例子能让我们更好的理解如何使用BULK INSERT命令。首先,我们来创建一个名为Sales的表,我们将要把来自文本文件的数据插入到这个表中。
$t5W0p)U-S'k(T0P%s17DST.com 致力于Discuz!插件、风格作者等第三方发展,拥有Discuz!插件风格中心(DAC),一键安装和卸载Discuz!插件及Discuz!风格。以协作开发论坛来保护作者版权并鼓励协作开发。并帮助中小站长发展。是Discuz!官方认可和推荐的站长和作者的交流平台。网络软件第三方及站长交流论坛 | Discuz!插件风格中心服务论坛;C9D;F f4^(r
  CREATE TABLE [dbo].[Sales]
/?8q%q6i6B8A;O8U17DST.com 致力于Discuz!插件、风格作者等第三方发展,拥有Discuz!插件风格中心(DAC),一键安装和卸载Discuz!插件及Discuz!风格。以协作开发论坛来保护作者版权并鼓励协作开发。并帮助中小站长发展。是Discuz!官方认可和推荐的站长和作者的交流平台。  (
2s4A r$i,i0I(KDiscuz!插件风格中心,Discuz插件,dz插件,Discuz风格,dz风格,Discuz!教程,DZ风格教程,DZ插件教程,一键安装,一键卸载,第三方,插件作者,风格作者,协作开发,站长,建站,php,Discuz!支持团队,Discuz! Support Team  [SaleID] [int],
/h+T&i&a*@$w8]Discuz!插件风格中心,Discuz插件,dz插件,Discuz风格,dz风格,Discuz!教程,DZ风格教程,DZ插件教程,一键安装,一键卸载,第三方,插件作者,风格作者,协作开发,站长,建站,php,Discuz!支持团队,Discuz! Support Team  [Product] [varchar](10) NULL, Discuz!插件风格中心,Discuz插件,dz插件,Discuz风格,dz风格,Discuz!教程,DZ风格教程,DZ插件教程,一键安装,一键卸载,第三方,插件作者,风格作者,协作开发,站长,建站,php,Discuz!支持团队,Discuz! Support Team3W:V3g B7t
  [SaleDate] [datetime] NULL, Discuz!插件风格中心,Discuz插件,dz插件,Discuz风格,dz风格,Discuz!教程,DZ风格教程,DZ插件教程,一键安装,一键卸载,第三方,插件作者,风格作者,协作开发,站长,建站,php,Discuz!支持团队,Discuz! Support Team0x!t7r$G/C:k5l$K8C)a-s'{
  [SalePrice] [money] NULL 17DST.com 致力于Discuz!插件、风格作者等第三方发展,拥有Discuz!插件风格中心(DAC),一键安装和卸载Discuz!插件及Discuz!风格。以协作开发论坛来保护作者版权并鼓励协作开发。并帮助中小站长发展。是Discuz!官方认可和推荐的站长和作者的交流平台。;O5i0J8P0P X*h/|+P7j
  ) 17DST.com 致力于Discuz!插件、风格作者等第三方发展,拥有Discuz!插件风格中心(DAC),一键安装和卸载Discuz!插件及Discuz!风格。以协作开发论坛来保护作者版权并鼓励协作开发。并帮助中小站长发展。是Discuz!官方认可和推荐的站长和作者的交流平台。7i3X3z-y$]2b8L.L

$a&v$M.A2P'X网络软件第三方及站长交流论坛 | Discuz!插件风格中心服务论坛    当我们使用BULK INSERT命令来插入数据时,不要启动目标表中的触发器,因为触发器会减缓数据导入的进程。www.discuzsupport.net)G5x%d5g0s

:W*e)T/`&U){(Z*s17DST  在下一个例子中,我们将在Sales表上创建触发器,用来打印插入到表中的记录的数量。3r-~(e)Y(^8I
www.discuzsupport.net.P)H!f5Q'p%w:E
  CREATE TRIGGER tr_Sales www.discuzsupport.net8a,@6n)j1_
  ON Sales www.discuzsupport.net8]2d;b(d)B,`
  FOR INSERT
(J&P7q,t'D#L$\8wwww.discuzsupport.net  AS
;? g"?*a#T"E&t'F17DST  BEGIN www.discuzsupport.net5\,?.A%T6m#s.G3n
  PRINT CAST(@@ROWCOUNT AS VARCHAR(5)) + ' rows Inserted.' www.discuzsupport.net*y'o6F/Y8`1h
  END
5s*R T(o'e"y)z3rDiscuz!插件风格中心,Discuz插件,dz插件,Discuz风格,dz风格,Discuz!教程,DZ风格教程,DZ插件教程,一键安装,一键卸载,第三方,插件作者,风格作者,协作开发,站长,建站,php,Discuz!支持团队,Discuz! Support Team17DST.com 致力于Discuz!插件、风格作者等第三方发展,拥有Discuz!插件风格中心(DAC),一键安装和卸载Discuz!插件及Discuz!风格。以协作开发论坛来保护作者版权并鼓励协作开发。并帮助中小站长发展。是Discuz!官方认可和推荐的站长和作者的交流平台。 p+^-L+O/y"e4E
    这里我们选择文本文件作为源数据文件,文本文件中的值通过逗号分割开。该文件包含1000条记录,而且其字段和Sales表的字段直接关联。由于该文本文件中的值是由逗号分割开的,我们只需要指定FIELDTERMINATOR即可。注意,当下面这条语句运行时,我们刚刚创建的触发器并没有启动:
5O(H4d%I4P)n/C$]:~8h&~Discuz!插件风格中心,Discuz插件,dz插件,Discuz风格,dz风格,Discuz!教程,DZ风格教程,DZ插件教程,一键安装,一键卸载,第三方,插件作者,风格作者,协作开发,站长,建站,php,Discuz!支持团队,Discuz! Support Team
1K)U5W([#d!u!`17DST.com 致力于Discuz!插件、风格作者等第三方发展,拥有Discuz!插件风格中心(DAC),一键安装和卸载Discuz!插件及Discuz!风格。以协作开发论坛来保护作者版权并鼓励协作开发。并帮助中小站长发展。是Discuz!官方认可和推荐的站长和作者的交流平台。  BULK INSERT Sales FROM 'c:SalesText.txt' WITH (FIELDTERMINATOR = ',')
&R9h/U2?4C5S.g+B17DST.com 致力于Discuz!插件、风格作者等第三方发展,拥有Discuz!插件风格中心(DAC),一键安装和卸载Discuz!插件及Discuz!风格。以协作开发论坛来保护作者版权并鼓励协作开发。并帮助中小站长发展。是Discuz!官方认可和推荐的站长和作者的交流平台。www.discuzsupport.net/^7o0D;M+P5N _!j H6g
  当我们要的数据量非常大时,有时候就需要启动触发器。下面的脚本使用了FIRE_TRIGGERS选项来指明在目标表上的任何触发器都应当启动:网络软件第三方及站长交流论坛 | Discuz!插件风格中心服务论坛&Z.G6|)b&y;w
网络软件第三方及站长交流论坛 | Discuz!插件风格中心服务论坛%V I.`!]+m)G
  BULK INSERT Sales FROM 'c:SalesText.txt' WITH (FIELDTERMINATOR = ',', FIRE_TRIGGERS)
&j(@4U)S0P&^;A!Pwww.discuzsupport.net
%S1}+n9k;?$V#K4]({17DST.com 致力于Discuz!插件、风格作者等第三方发展,拥有Discuz!插件风格中心(DAC),一键安装和卸载Discuz!插件及Discuz!风格。以协作开发论坛来保护作者版权并鼓励协作开发。并帮助中小站长发展。是Discuz!官方认可和推荐的站长和作者的交流平台。  我们可以使用BATCHSIZE指令来设置在单个事务中可以插入到表中的记录的数量。在前一个例子中,所有的1000条记录都在同一个事务中被插入到目标表里。下面的例子,我们将BATCHSIZE参数设置为2,也就是说要对该表执行500次独立的插入事务。这也意味着启动500次触发器,所以将有500咯打印指令输出到屏幕上。17DST.com 致力于Discuz!插件、风格作者等第三方发展,拥有Discuz!插件风格中心(DAC),一键安装和卸载Discuz!插件及Discuz!风格。以协作开发论坛来保护作者版权并鼓励协作开发。并帮助中小站长发展。是Discuz!官方认可和推荐的站长和作者的交流平台。9f(t${5@0k6A;l$S
BULK INSERT Sales FROM 'c:SalesText.txt' WITH (FIELDTERMINATOR = ',', FIRE_TRIGGERS, BATCHSIZE = 2)
:}#I.H4z8M%n3U$U网络软件第三方及站长交流论坛 | Discuz!插件风格中心服务论坛
,D-s3E*s(H0W5n-O7z  BULK INSERT不仅仅可以应用于SQL Server 2005的本地映射驱动器。下面的语句将告诉我们如何从名为FileServer的服务器的D盘中将SalesText文件的数据导入。
-w'J'P%q2\;yDiscuz!插件风格中心,Discuz插件,dz插件,Discuz风格,dz风格,Discuz!教程,DZ风格教程,DZ插件教程,一键安装,一键卸载,第三方,插件作者,风格作者,协作开发,站长,建站,php,Discuz!支持团队,Discuz! Support Team17DST;S2T6z'Z+y#@:f6U
  BULK INSERT Sales FROM 'FileServerD$SalesText.txt' WITH (FIELDTERMINATOR = ',')17DST.com 致力于Discuz!插件、风格作者等第三方发展,拥有Discuz!插件风格中心(DAC),一键安装和卸载Discuz!插件及Discuz!风格。以协作开发论坛来保护作者版权并鼓励协作开发。并帮助中小站长发展。是Discuz!官方认可和推荐的站长和作者的交流平台。9N,G0Y*P(|!m+M:w.o

.D4G)]+`)}&y8iDiscuz!插件风格中心,Discuz插件,dz插件,Discuz风格,dz风格,Discuz!教程,DZ风格教程,DZ插件教程,一键安装,一键卸载,第三方,插件作者,风格作者,协作开发,站长,建站,php,Discuz!支持团队,Discuz! Support Team  有时候,我们在执行导入操作以前,最好能先查看一下将要输入的数据。下面的语句在使用BULK命令时,使用了OPENROWSET函数,以便从SalesText文本文件中读取源数据。该语句同时还需要使用一个格式文件(此处没有列出文件的具体内容)来表明该文本文件中的数据格式。Discuz!插件风格中心,Discuz插件,dz插件,Discuz风格,dz风格,Discuz!教程,DZ风格教程,DZ插件教程,一键安装,一键卸载,第三方,插件作者,风格作者,协作开发,站长,建站,php,Discuz!支持团队,Discuz! Support Team)K `#F%y0^!E/C%Z3N
Discuz!插件风格中心,Discuz插件,dz插件,Discuz风格,dz风格,Discuz!教程,DZ风格教程,DZ插件教程,一键安装,一键卸载,第三方,插件作者,风格作者,协作开发,站长,建站,php,Discuz!支持团队,Discuz! Support Team%H#K"B:b0S*~8g(?6c
  SELECT *
4K%[4l:h/H4^;Z(h+V  FROM OPENROWSET(BULK 'c:SalesText.txt' ,
9L+o9J!K)y3m17DST  FORMATFILE='C:SalesFormat.Xml' -B)w0N-i!s)c
  ) AS mytable;
!j4y1z&I.I'fwww.discuzsupport.net  GO 17DST:q,V6V$W9N*q F%o
经笔者的使用测试,发现众多网络服务商中,时代互联提供的虚拟主机导入SQL数据
6@$w+M f8l$V-V4R8O6l十分稳定,其产品均支持 ASP.NET3.5(3.0/2.0/1.1)/ASP,数据库自动备份,免费集成繁简通简装版,多域名绑定,多子网站支持,GCDN 网站加速器,镜像加速,高级访问统计系统,支持WAP,可选电信/网通/香港机房,并免费送cn域名!
+P7b(W-a8f0_+^*T"y1j)X'|网络软件第三方及站长交流论坛 | Discuz!插件风格中心服务论坛    如果您有建站需要,在这里笔者给您推荐时代互联的两款新型主机:17DST/V%E9P/k-k'L:c
[url=http://www.[此站已因广告而被DST屏蔽]/vhost/][/url]7z,p#^"K/n.`+t-I
标准商务C型:60MB SQL Server数据库空间+独立网页空间500MB+送800MB邮局空间=  1415 元/年www.discuzsupport.net*q1_1l6d(I8y1L5a)K
智强商务C型 100MB SQL Server数据库空间+独立网页空间1000MB+送1000MB邮局空间= 1588元/年 8b/g!{8i$};u,`7T
Discuz!插件风格中心,Discuz插件,dz插件,Discuz风格,dz风格,Discuz!教程,DZ风格教程,DZ插件教程,一键安装,一键卸载,第三方,插件作者,风格作者,协作开发,站长,建站,php,Discuz!支持团队,Discuz! Support Team5f(`'m3d9c(g
更多优惠,更多虚拟主机在线订购试用,详情请见: [url]http://www.[此站已因广告而被DST屏蔽]/vhost[/url]Discuz!插件风格中心,Discuz插件,dz插件,Discuz风格,dz风格,Discuz!教程,DZ风格教程,DZ插件教程,一键安装,一键卸载,第三方,插件作者,风格作者,协作开发,站长,建站,php,Discuz!支持团队,Discuz! Support Team1c5o.o)P5f:`'M%e,I.T
网络软件第三方及站长交流论坛 | Discuz!插件风格中心服务论坛3G5F0@,j7@(z;t*x:|6Y-x k
空间专线: 0756-2623871  QQ:168075865  
(e:z0h9\$b4h&DDiscuz!插件风格中心,Discuz插件,dz插件,Discuz风格,dz风格,Discuz!教程,DZ风格教程,DZ插件教程,一键安装,一键卸载,第三方,插件作者,风格作者,协作开发,站长,建站,php,Discuz!支持团队,Discuz! Support Team17DST'B+x1b(P+B/B
现在4月份买主机1588的空间,时代互联百万现金大派送!(凡金额满600元即送100元,满1588元即送200元,以此类推,多充多得。)


当前时区 GMT+8, 现在时间是 2008-9-8 12:29 京ICP备08003531号

Designed By 17DST
Baidu XML