向SqlServer数据库插入数据
Insert Values
Insert Select
Insert Exec
Select Into
Bulk Insert
Insert Values是最常用的一種插入數(shù)據(jù)的方式,基本語(yǔ)法如下,表名之后可以指定目標(biāo)列的名稱,這種顯式的指定目標(biāo)列的名稱是可選的,但是這種做法的好處是對(duì)語(yǔ)句的列值列名之間的關(guān)聯(lián)關(guān)系進(jìn)行控制,而不必單純的依賴定義表時(shí)
各個(gè)列出現(xiàn)的順序
INSERT INTO dbo.DimDate
( DataKey ,
Year ,
Qu ,
QuCN ,
Month ,
MonthCN ,
Ten ,
TenCN ,
Week ,
WeekDay ,
Day ,
Date
)
VALUES ( 0 , -- DataKey - int
0 , -- Year - int
0 , -- Qu - int
'' , -- QuCN - varchar(20)
0 , -- Month - int
'' , -- MonthCN - varchar(20)
0 , -- Ten - int
'' , -- TenCN - varchar(20)
0 , -- Week - int
'' , -- WeekDay - varchar(20)
0 , -- Day - int
'2014-09-23 13:34:16' -- Date - datetime
)
確定列值的優(yōu)先級(jí)順序:給定的值》默認(rèn)值》Null
Sql2008增強(qiáng)了Values功能,允許在一條語(yǔ)句中指定由逗號(hào)隔開的多條記錄
INSERT INTO dbo.Table_1 ( ID ) VALUES ( 0 ),( 1 ),( 2 )
使用Values構(gòu)建虛擬表
SELECT * FROM (VALUES ( 0 ),( 1 ),( 2 )) AS a(id)
Insert Select
Insert Select 將一組由Select查詢返回的結(jié)果行插入到目標(biāo)表中(目標(biāo)表是已經(jīng)存在的表,這一點(diǎn)和Select Into有區(qū)別)
INSERT INTO dbo.Table_1 SELECT * FROM dbo.Table_2
Insert Exec
Insert Exec 語(yǔ)句可以把存儲(chǔ)過程或動(dòng)態(tài)Sql批處理返回的結(jié)果集插入到目標(biāo)表
Select Into
Select Into的作用是創(chuàng)建一個(gè)目標(biāo)表,并用返回的結(jié)果集填充它,不能用這個(gè)語(yǔ)句向已經(jīng)存在的表中插入數(shù)據(jù),
當(dāng)指定的目標(biāo)表是臨時(shí)表時(shí)自動(dòng)創(chuàng)建一個(gè)臨時(shí)表,指定為用戶表時(shí)創(chuàng)建一個(gè)用戶表,
Select Into 會(huì)復(fù)制來源表的基本結(jié)構(gòu)(包括列名、數(shù)據(jù)類型、是否允許NUll以及IDentity屬性),不會(huì)復(fù)制的三樣?xùn)|西(約束、索引、觸發(fā)器)
Select into的另一個(gè)優(yōu)點(diǎn):如果數(shù)據(jù)庫(kù)的屬性沒有設(shè)置成完成恢復(fù)模式,Select into 就會(huì)按照最小日志記錄模式來執(zhí)行操作
Bulk Insert
這種方式用的比較少,用于將文件中的數(shù)據(jù)導(dǎo)入一個(gè)已經(jīng)存在的表
示例本例從指定的數(shù)據(jù)文件中導(dǎo)入訂單詳細(xì)信息,該文件使用豎杠 (|) 字符作為字段終止符,使用 |/n 作為行終止符。
BULK INSERT Northwind.dbo.[Order Details] FROM 'f:/orders/lineitem.tbl'
WITH (
FIELDTERMINATOR = '|',
ROWTERMINATOR = '|/n'
)
總結(jié)
以上是生活随笔為你收集整理的向SqlServer数据库插入数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue服务端渲染实践
- 下一篇: java 杨辉三角