bcp、BULK INSERT、OPENROWSET(BULK)
4270 ワード
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は、ユーザーが指定した形式でデータファイルをデータベーステーブルまたはビューにロードします.
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ファイル形式
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
以上は個人の小練である