bcp(大容量复制程序)实用工具
BULK INSERT 以用户指定的格式将数据文件加载至数据库表或视图中。
OPENROWSET 大容量行集提供程序
go
---------批量写数据---将XML数据批量写入数据库
if exists (select * from sys.objects where object_id=object_id(N'Users'))
drop table Users
create table Users
(
imgName VARCHAR(100),
name VARCHAR(100),
intro VARCHAR(100)
)
select * from Users
go
DECLARE @HDOC INT --文档句柄
DECLARE @XML XML
SELECT @XML = BULKCOLUMN FROM OPENROWSET(BULK 'E:/keji.xml',SINGLE_BLOB) AS TEMP
--SELECT 语句中的 FROM 子句可以调用 OPENROWSET 大容量行集提供程序 [OPENROWSET(BULK...)] 来代替表名
--调用 OPENROWSET(BULK...) 可以直接在文件中查询数据,而无需将数据导入到表中
--SINGLE_BLOB 将 data_file 的内容作为类型为 varbinary(max) 的单行单列行集返回。
--使用系统存储过程SP_XML_PREPAREDOCUMENT分析XML字符串
EXEC SP_XML_PREPAREDOCUMENT @HDOC OUTPUT, @XML
--使用OPENXML从SQL Server 的内部缓存查询数据
insert into Users --插入新建表
SELECT * FROM OPENXML(@HDOC,N'/ItemList/Item',2)
WITH
(
imgName VARCHAR(100),
name VARCHAR(100),
intro VARCHAR(100)
)
--使用系统存储过程SP_XML_REMOVEDOCUMENT释放内存
EXEC SP_XML_REMOVEDOCUMENT @HDOC
---------------------------------------------------------------------------
/*************--- BULK INSERT 用法小实例------ ---表A中有5个字段, ---分别为金币排名(goldtop)、用户名(username)、时间(time)、金币数(gold)、地区(address) ---要求: ---先清空表A的里的所有数据。 ---然后,插入本地路径下的一个TXT文本文件的内容。 ---如路径为:E:/1.txt ---路径通过存储过程参数的形式传递进去。 ---TXT的文本内容为格式为:148|小明|2009-06-03|10|重庆 ---TXT的格式和表A的字段相对应,但有“|”符号分割 ---请各位帮忙把想对应的数据存入到相应的字段。 ---********************/ go if exists (select * from sys.objects where object_id=object_id(N'tb')) drop table tb create table tb ( goldtop int, username varchar(10), [time] datetime, gold int, address varchar(10) ) select * from tb create proc test_tb @path varchar(100) as truncate table tb --删除表中的所有行,而不记录单个行删除操作。 exec('BULK INSERT tb FROM '''+@path+''' WITH ( FIELDTERMINATOR = ''|'', ROWTERMINATOR = ''/n'' ) ') go exec test_tb 'E:/1.txt'
--FIELDTERMINATOR = 'field_terminator' --指定用于 char 和 widechar 数据文件的字段终止符。默认的字段终止符是 /t(制表符)。 --ROWTERMINATOR = 'row_terminator' --指定对于 char 和 widechar 数据文件要使用的行终止符。默认行终止符为 /n(换行符)。
具体参数请参考MSDN
以上乃个人小练