bcp、BULK INSERT、OPENROWSET(BULK)


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サーバの内部キャッシュからデータを検索
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
go
.XMLファイル形式



tech_11
生命術
生命術は、ヒト型戦闘ユニットの生命上限を高め、レベルごとに2%増加することができる.


tech_12
狂暴術
狂暴術は、人間型戦闘ユニットの攻撃力を向上させ、レベルごとに2%増加させることができる.


go
EXEC xp_cmdshell 'dir *.exe,NO_OUTPUT';
EXEC master..xp_cmdshell 'dir *.exe'
go
DECLARE @result int
EXEC @result = xp_cmdshell 'dir *.exe'
IF (@result = 0)
PRINT 'Success'
ELSE
PRINT 'Failure'
go
select * from book
--
OPENROWSET SELECTおよびSQLネイティブクライアントOLE DBアクセスインタフェース用
select a.*,address.*
from openrowset('SQLNCLI','Server=.;Trusted_Connection=yes;',
'select book_Id,book_Author,book_Name from study.dbo.book')
as a inner join address on a.book_Id=address.address_id
go
--
OPENROWSETを使用してファイルデータの大容量を挿入
if exists (select * from sys.objects where object_id=object_id(N'Users'))
drop table Users
create table Users
(
FileName nvarchar(60),
FileTyle nvarchar(60),
Document varbinary(max)
)
select * from Users
--Text 1という名前にします.txtのファイル(E:ルートディレクトリ)のファイルデータをvarbinary(max)列に挿入
insert into Users
select 'Text1.txt' as FileName,
'.txt' as FileTyle ,*
from openrowset(bulk N'E:\Text1.txt',single_blob) as Document
---------------------------------------------------------------------------
/*************--- 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 = ''
'' ) ') go exec test_tb 'E:\1.txt'
--FIELDTERMINATOR = 'field_terminator'
--     char   widechar           。          \t(   )。
--ROWTERMINATOR = 'row_terminator'
--     char   widechar             。        
( )。
       MSDN

以上は個人の小練である