亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

SQL Server中數(shù)據(jù)行批量插入腳本的存儲實現(xiàn)

2024-08-31 01:03:35
字體:
供稿:網(wǎng)友
這篇文章主要介紹了SQL Server中數(shù)據(jù)行批量插入腳本的存儲實現(xiàn) 的相關(guān)資料,需要的朋友可以參考下
 

無意中看到朋友寫的一篇文章“將表里的數(shù)據(jù)批量生成INSERT語句的存儲過程的實現(xiàn)”。我仔細(xì)看文中的兩個存儲代碼,自我感覺兩個都不太滿意,都是生成的單行模式的插入,數(shù)據(jù)行稍微大些性能會受影響的。所在公司本來就存在第二個版本的類似實現(xiàn),但是是基于多行模式的,還是需要手工添加UNAION ALL來滿足多行模式的插入。看到這篇博文和基于公司數(shù)據(jù)行批量腳本的存儲的缺點,這次改寫和增強該存儲的功能。

   本存儲運行于SQL Server 2005或以上版本,T-SQL代碼如下:

 IF OBJECT_ID(N'dbo.usp_GetInsertSQL', 'P') IS NOT NULL BEGIN  DROP PROCEDURE dbo.usp_GetInsertSQL; END GO --================================== -- 功能: 獲取數(shù)據(jù)表記錄插入的SQL腳本 -- 說明: 具體實現(xiàn)闡述  -- 作者: XXX -- 創(chuàng)建: yyyy-MM-dd -- 修改: yyyy-MM-dd XXX 修改內(nèi)容描述 --================================== CREATE PROCEDURE dbo.usp_GetInsertSQL  (  @chvnTable NVARCHAR(),   -- 數(shù)據(jù)表名稱(建議只使用表名稱,不要帶有分隔符[])  @chvnWhere NVARCHAR() = N'', -- where查詢條件(不帶WHERE關(guān)鍵字)  @bitIsSingleRow BIT =     -- 是否單行模式,默認(rèn)為單行模式(單行模式為單行INSERT INTO VALUES格式;非單行模式(多行模式)為多行INSERT INTO SELECT格式) )  --$Encode$-- AS BEGIN  SET NOCOUNT ON;  SET @bitIsSingleRow = ISNULL(@bitIsSingleRow, );  DECLARE   @intTableID AS INT,   @chvnSchemaTableName NVARCHAR();/*格式:[schema].[table]--++++++(各部分對應(yīng)字符數(shù))*/  SELECT   @intTableID = ,   @chvnSchemaTableName = N'';  SELECT   @intTableID = object_id   ,@chvnSchemaTableName = QUOTENAME(SCHEMA_NAME(schema_id)) + N'.' + QUOTENAME(@chvnTable) /*組合架構(gòu)名稱和表名稱的連接*/  FROM sys.objects  WHERE name = @chvnTable   AND type = 'U';  DECLARE   @chvnColumnNames NVARCHAR(),    -- 字段列名集,多個以逗號','分隔,格式如:[column_name],[column_name],...   @chvnColumnValues AS NVARCHAR(MAX);    -- 字段列值集,多個以逗號','分隔   DECLARE    @chvnTSQL AS NVARCHAR(MAX),      -- TSQL腳本變量   @chvnInsertIntoBoday AS NVARCHAR();   -- InsertInto主體變量  SELECT   @chvnTSQL = N'',   @chvnInsertIntoBoday = N'';  SELECT   @chvnColumnNames = ISNULL(@chvnColumnNames + N',', N'') + QUOTENAME(T.column_name)   ,@chvnColumnValues = ISNULL(@chvnColumnValues + N' + '','' + ', N'') + CAST(T.column_value AS NVARCHAR())  FROM (SELECT      name AS column_name /*字段列名*/     /*字段列值*/     ,column_value = CASE      WHEN system_type_id IN (, , , , , , , , , , ) /*數(shù)字?jǐn)?shù)據(jù)類型:整數(shù)數(shù)據(jù)類型(bit、tinyint、smallint、int、bigint),帶精度和小數(shù)的數(shù)據(jù)類型(decimal、numeric)和貨幣數(shù)據(jù)類型(monery和smallmoney*/               THEN 'CASE WHEN '+ name + ' IS NULL THEN ''NULL'' ELSE CAST(' + name + ' AS VARCHAR) END'      WHEN system_type_id IN (, , , , ) /*日期和時間數(shù)據(jù)類型:datetime、smalldatetime(兼容sql server 新增 date、datetime和time)*/        THEN 'CASE WHEN '+ name + ' IS NULL THEN ''NULL'' ELSE '''''''' + REPLACE(CONVERT(VARCHAR(), ' + name + ', ), '' ::.'', '''') + '''''''' END'      WHEN system_type_id IN () /*字符串?dāng)?shù)據(jù)類型:varchar*/        THEN 'CASE WHEN '+ name + ' IS NULL THEN ''NULL'' ELSE '''''''' + REPLACE(' + name + ', '''''''', '''''''''''') + '''''''' END'      WHEN system_type_id IN () /*Unicode字符串?dāng)?shù)據(jù)類型:nvarchar*/        THEN 'CASE WHEN '+ name + ' IS NULL THEN ''NULL'' ELSE ''N'''''' + REPLACE(' + name + ', '''''''','''''''''''') + '''''''' END'      WHEN system_type_id IN () /*字符串?dāng)?shù)據(jù)類型:char*/        THEN 'CASE WHEN '+ name + ' IS NULL THEN ''NULL'' ELSE '''''''' + CAST(REPLACE(' + name + ', '''''''' ,'''''''''''') AS CHAR(' + CAST(max_length AS VARCHAR) + ')) + '''''''' END'      WHEN system_type_id IN () /*nicode字符串?dāng)?shù)據(jù)類型:nchar*/        THEN 'CASE WHEN '+ name + ' IS NULL THEN ''NULL'' ELSE ''N'''''' + CAST(REPLACE(' + name + ', '''''''' ,'''''''''''') AS CHAR(' + CAST(max_length AS VARCHAR) + ')) + '''''''' END'      ELSE '''NULL''' END    FROM sys.columns     WHERE object_id = @intTableID  ) AS T;  SET @chvnInsertIntoBoday = N'''INSERT INTO '+ @chvnSchemaTableName + N' (' + @chvnColumnNames + N')''';   -- 方式一、代碼格式使用了GOTO和Label  --BEGIN  -- IF @bitIsSingleRow = /*多行模式*/  -- BEGIN   --  SET @chvnTSQL = N'SELECT ''SELECT '' + ' + @chvnColumnValues + ' AS RowData, ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS RowNum FROM ' + @chvnSchemaTableName   --  -- 此處不能使用GOTO WhereCondition;,因為之后的代碼不會被執(zhí)行  --  IF @chvnWhere > ''  --  BEGIN  --   SET @chvnTSQL = @chvnTSQL + ' WHERE ' + @chvnWhere;  --  END  --  -- 處理多行模式,需要使用ROW_NUMBER窗口函數(shù)    --  SET @chvnTSQL = N'SELECT CASE WHEN T.rownum = THEN REPLICATE(N'' '', LEN(N''UNION ALL '') + ) + T.RowData ELSE N''UNION ALL '' + T.RowData END' +  --      N' FROM (' + @chvnTSQL + N') AS T';  --  SET @chvnTSQL = N'SELECT '+ @chvnInsertIntoBoday + N';' +  --      @chvnTSQL;  --  GOTO MultiRow;  -- END  -- ELSE IF @bitIsSingleRow = /*當(dāng)行模式*/  -- BEGIN  --  SET @chvnTSQL = N'SELECT ' + @chvnInsertIntoBoday +   --      N' + ''VALUES('' + ' + @chvnColumnValues + ' + '');'' FROM ' + @chvnSchemaTableName;  --  GOTO WhereCondition;  -- END  -- -- where查詢條件  -- WhereCondition:  -- IF @chvnWhere > ''  -- BEGIN  --  SET @chvnTSQL = @chvnTSQL + ' WHERE ' + @chvnWhere;  -- END   -- MultiRow:/*多行模式GOTO的Label空標(biāo)記*/  --END  -- 方式二、存在部分代碼的冗余  BEGIN   IF @bitIsSingleRow = /*多行模式*/   BEGIN     SET @chvnTSQL = N'SELECT ''SELECT '' + ' + @chvnColumnValues + ' AS RowData, ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS RowNum FROM ' + @chvnSchemaTableName     IF @chvnWhere > ''    BEGIN     SET @chvnTSQL = @chvnTSQL + ' WHERE ' + @chvnWhere;    END    -- 多行模式特殊代碼,需要使用ROW_NUMBER窗口函數(shù)     SET @chvnTSQL = N'SELECT CASE WHEN T.rownum = THEN REPLICATE(N'' '', LEN(N''UNION ALL '') + ) + T.RowData ELSE N''UNION ALL '' + T.RowData END' +        N' FROM (' + @chvnTSQL + N') AS T';    SET @chvnTSQL = N'SELECT '+ @chvnInsertIntoBoday + N';' +        @chvnTSQL;   END   ELSE IF @bitIsSingleRow = /*單行模式*/   BEGIN    SET @chvnTSQL = N'SELECT ' + @chvnInsertIntoBoday +         N' + ''VALUES('' + ' + @chvnColumnValues + ' + '');'' FROM ' + @chvnSchemaTableName;    IF @chvnWhere > ''    BEGIN     SET @chvnTSQL = @chvnTSQL + ' WHERE ' + @chvnWhere;    END   END  END  PRINT @chvnTSQL;    EXEC(@chvnTSQL); END GO 

    為了測試以上存儲的效果,下面準(zhǔn)備一個有數(shù)據(jù)的數(shù)據(jù)表,T-SQL代碼如下:

 IF OBJECT_ID(N'dbo.UserLoginInfo', N'U') IS NOT NULL BEGIN  DROP TABLE dbo.UserLoginInfo; END GO -- create testing table UserLoginInfo CREATE TABLE dbo.UserLoginInfo (  ID INT IDENTITY(, ) PRIMARY KEY,  Name VARCHAR() NOT NULL,  LoginTime DATETIME NOT NULL ); GO -- insert testing data INSERT dbo.UserLoginInfo (Name, LoginTime) VALUES  ('zhang', '-- ::') ,('li', '-- ::') ,('wang', '-- ::') ,('zhang', '-- ::') ,('li', '-- ::') ,('wang', '-- ::') ,('zhang', '-- ::') ,('li', '-- ::') ,('wang', '-- ::') ,('zhang', '-- ::') ,('li', '-- ::') ,('wang', '-- ::') ,('zhang', '-- ::') ,('li', '-- ::') ,('li', '-- ::') ,('li', '-- ::') ,('li', '-- ::') ,('li', '-- ::') ,('li', '-- ::') ,('li', '-- ::') ,('li', '-- ::') ,('wang', '-- ::') ,('zhang', '-- ::') ,('li', '-- ::') ,('wang', '-- ::') ,('zhang', '-- ::') ,('li', '-- ::') ,('wang', '-- ::') ,('zhang', '-- ::') ,('li', '-- ::') ,('wang', '-- ::'); GO  先測試單行模式的效果,相應(yīng)的T-SQL代碼如下:  EXEC dbo.usp_GetInsertSQL  @chvnTable = N'UserLoginInfo',   -- nvarchar()  @chvnWhere = N'',      -- nvarchar()  @bitIsSingleRow = ;     -- bit GO 

執(zhí)行后的查詢結(jié)果如下:

SQL Server中數(shù)據(jù)行批量插入腳本的存儲實現(xiàn)

 再測試多行模式的效果,相應(yīng)的T-SQL代碼如下:

 EXEC dbo.usp_GetInsertSQL  @chvnTable = N'UserLoginInfo',   -- nvarchar()  @chvnWhere = N'',      -- nvarchar()  @bitIsSingleRow = ;     -- bit GO

執(zhí)行后的查詢效果如下:

SQL Server中數(shù)據(jù)行批量插入腳本的存儲實現(xiàn)

注意:多行模式,還需要將以上的兩個結(jié)果前后合并在一個文件就可以啦。

以上內(nèi)容是小編給大家分享的SQL Server中數(shù)據(jù)行批量插入腳本的存儲實現(xiàn),希望大家喜歡。



注:相關(guān)教程知識閱讀請移步到MSSQL教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
久久精品国产sm调教网站演员| 人成福利视频在线观看| 亚洲最新av网址| 高清毛片aaaaaaaaa片| 99热手机在线观看| 国产一区二区三区免费观看在线| 8x8x最新地址| 亚洲xxx在线观看| 1769国内精品视频在线播放| 久久电影网站中文字幕| 日韩不卡手机在线v区| 2018日韩中文字幕| av在线电影播放| 日韩精品资源二区在线| 色网视频在线| 男插女视频久久久| 神马影院一区二区| p色视频免费在线观看| 男人添女荫道口图片| 久久国产婷婷国产香蕉| 黄色工厂在线观看| 国产激情偷乱视频一区二区三区| 国产69精品久久久久孕妇| 日本午夜精品理论片a级appf发布| 亚洲女同在线| 日韩激情视频| 日韩中文字幕高清在线观看| 中文字幕2020第一页| 国产成人精彩在线视频九色| 亚洲日本伦理| 日韩电影一区二区三区四区| 91精品蜜臀在线一区尤物| 日韩久久精品一区| 污污的网站在线看| 91tv亚洲精品香蕉国产一区7ujn| www.国产麻豆| 欧美日韩a v| 国产精品久久久午夜夜伦鲁鲁| 又粗又硬又爽国产视频| 久久综合成人精品亚洲另类欧美| 日韩精品一区二区三区在线| 国产精品秘入口18禁麻豆免会员| 国产欧美最新羞羞视频在线观看| 第九色区av在线| 国产黄网站在线观看| av片在线免费观看| 国产精品.xx视频.xxtv| 国产精品久久久久久久久久久久久久久久久| 久久久久久久久久久国产| 亚洲美女www午夜| 中文国语毛片高清视频| 久久久久亚洲av成人网人人软件| 精品国产乱码一区二区| 中文字幕丰满孑伦无码专区| 国产有码在线观看| 欧美日韩一区二区区别是什么| 亚洲视频三区| 青草青草久热精品视频在线观看| 中文字幕在线免费| 1024精品一区二区三区| 日韩福利一区二区| 中文字幕中文字幕99| 免费精品国产自产拍在| 欧美成人免费大片| 亚洲在线天堂| 麻豆av资源| 91av手机在线| 精品国产一区探花在线观看| 国产亚洲精品va在线观看| 少妇精品一区二区| 男人的天堂成人| 国产在线精品免费av| 久草手机在线视频| 国产97在线|日韩| 久久久久久久久久久国产精品| 精品毛片久久久久久| 艳妇臀荡乳欲伦亚洲一区| 国产日韩视频一区| 国产高清一区二区三区| 国产欧美一区二区三区国产幕精品| 1区2区在线| 97在线国产视频| 都市激情亚洲色图| 国产精品va在线观看视色| 国产精品扒开腿爽爽爽视频| 91亚洲精品久久久| av高清在线观看| 三上悠亚在线观看二区| 97视频在线观看网站| 黄网在线观看| 波多野结衣av一区二区全免费观看| 天堂影视av| 国产女人免费看a级丨片| 欧美爱爱网站| 国卡一卡二卡三免费网站| 91精品国产乱码久久蜜臀| 手机在线免费观看毛片| 91在线看网站| 欧美男人操女人视频| 欧美女孩性生活视频| 久久99精品久久久久婷婷| 人操人爱免费视频| 国产在线成人精品午夜| 天堂中文字幕一二区| 无码人妻aⅴ一区二区三区日本| 精品一区二区三| 欧美大胆性生话| 5252色成人免费视频| 中文字幕人成人乱码亚洲电影| 99久久久国产精品免费调教网站| 秋霞午夜av一区二区三区| 无码人妻丰满熟妇区毛片18| 美国美女黄色片| 视频一区视频二区视频三区视频四区国产| 538在线视频| 欧美在线va视频| 亚洲永久免费网站| 免费网站你懂的| 神马影院我不卡| 一区二区三区韩国| 日韩精品一区二区三区视频在线观看| 欧美美女被草| 91麻豆制片厂| 久久午夜宅男免费网站| 俄罗斯av网站| 亚洲精品第一国产综合精品| 欧美一级欧美三级在线| xvideos国产在线视频| 国产一区二区三区四区二区| 羞羞影院体验区| 欧美极品美女视频网站在线观看免费| 精品国产av色一区二区深夜久久| 亚洲精品视频啊美女在线直播| 久久精品国产亚洲一区二区三区| 日韩免费久久| 深夜福利小视频| 影音先锋亚洲视频| 国产精品一区二区人人爽| 成人欧美一区二区三区黑人孕妇| 日韩一区二区三区不卡| 亚洲精品在线视频免费| 欧美在线观看视频网站| 黄色三级电影网站| 欧美日韩在线精品一区二区三区激情综| 国产中文字幕视频在线观看| 狠狠色狠狠色综合日日五| 宅男网站在线免费观看| 99天天综合性| 欧美大片一区二区三区| 亚洲三区视频| 欧美三级网站| 宅男午夜视频| 波多野结衣中文字幕在线播放| 欧美日韩成人综合| 亚洲欧美色图区| 免费一级黄色大片| 97精品国产97久久久久久粉红| 中文字幕在线乱| 在线电影中文字幕| 精品无码人妻一区二区三区品| 在线免费av片| 日本精品视频一区二区| 114国产精品久久免费观看| 中文在线观看免费高清| 国产精品51麻豆cm传媒| 69av视频在线播放| 国产精品日韩精品欧美精品| 国产性一级片| 久久欧美中文字幕| 一二三区精品福利视频| 成人av色在线观看| 首页亚洲欧美制服丝腿| 国产三级精品网站| 免费涩涩18网站入口| 欧美va亚洲va| 日韩最新在线视频| 久久久国产精品一区二区三区| 最近中文字幕在线视频| 波多野结衣在线影院| 男女av一区三区二区色多| 天天插天天射| www.四虎精品| 国产亚洲精品久久| 国产欧美一区二区三区久久| 在线观看亚洲精品视频| 国产视频精品免费| www.久久撸.com| www.狠狠色.com| 国产寡妇亲子伦一区二区三区四区| 一区二区三区在线观看网站| 欧美美女操人视频| 精品欧美一区二区在线观看| 黄色a一级视频| 一级免费黄色录像| 男女在线观看视频| 三级外国片在线观看视频| av毛片在线播放| 欧美香蕉大胸在线视频观看| 成年人一级黄色片| 精品国产av 无码一区二区三区| 亚洲成色www8888| 国产天堂资源| jizz久久久久久| 里番在线播放| 日韩精品在线观看视频| 99热免费在线| 漂亮人妻被中出中文字幕| 天天插天天色| 亚洲av永久无码国产精品久久| 一二三四中文在线| 国产精品扒开腿做爽爽爽a片唱戏| 蜜桃av免费在线观看| 激情五月婷婷久久| 久久97超碰国产精品超碰| 国产精品色在线观看| 91久久线看在观草草青青| 怡红院av亚洲一区二区三区h| 中文字幕人成高视频| 中文字幕2区| 国产精品蜜臀| 日韩精品成人免费观看视频| 国产伦理片在线观看| 99国产精品99久久久久久粉嫩| 亚州国产精品久久久| 天天干夜夜夜操| 老熟妇高潮一区二区高清视频| 国产成人亚洲精品狼色在线| 日韩av在线免费观看| 精品一区二区三区五区六区| 国产精品1区2区3区| 国产成人精品av久久| 中文在线资源观看网站视频免费不卡| 日韩欧美国产一区二区| 色视频免费观看| 极品美女销魂一区二区三区| 久久久久国产一区二区| porn视频在线观看| 欧美限制电影| 亚洲欧美在线不卡| 亚洲色图14p| 欧美少妇性性性| 中文字幕日本视频| 国产一卡不卡| 国产成人午夜电影| 欧美男女爱爱视频| 香蕉成人av| 色婷婷av一区二区三区之e本道| 成熟丰满熟妇高潮xxxxx视频| 精品系列免费在线观看| 欧美日韩美女在线| 最新在线你懂的| 最近中文字幕在线中文高清版| 免费91在线观看| 人妻体内射精一区二区三区| 亚洲婷婷丁香| 免费看av大片| 国产一区二区视频网站| 2020日本在线视频中文字幕| 久久久亚洲午夜电影| 成人免费毛片糖心| 久久精品72免费观看| 日本在线看片免费人成视1000| 国产一级片免费看| 亚洲一区有码| www.狠狠| 欧美v亚洲v综合v国产v仙踪林| 成人一区二区三| 在线观看亚洲视频| 色呦呦网站一区| 亚洲a一区二区| 国产精品一区二区99| 亚洲人成免费| 久久久久久久久久成人| 在线观看欧美激情| 久久久久亚洲综合| 91亚洲国产成人久久精品| 国产精品一线二线三线| 99精品久久久久久| 国产综合在线看| 亚洲日本高清| 日韩深夜影院| 国产欧美欧美| 亚洲电影在线免费观看| 中文字幕在线免费看| 国产精品美女久久久久av福利| 精产国品一二三区| 久久久www成人免费毛片| 国产一二三区在线播放| h网站在线播放| 欧美孕妇孕交xxⅹ孕妇交| 亚洲 国产 欧美 日韩| 国产一区二区精品久| 看黄网站在线观看| 巨大荫蒂视频欧美另类大| 成人av在线影院| 国内伊人久久久久久网站视频| 精品国产乱码久久久久久天美| 欧美日韩一区二区在线观看| 国产99久久久欧美黑人| 亚洲精华国产| 久久视频这里有精品| 精品人妻一区二区三区免费| zzzwww在线看片免费| 久久偷看各类wc女厕嘘嘘偷窃| 久久久精品人妻一区二区三区| 亚洲大胆视频| 91久久久久久久| 91视频最新地址| 国产精品啪视频| 久热精品在线视频| www.成人精品| 人妻无码中文字幕| 日韩精品一区二区三区四区五区| 婷婷电影在线观看| 91午夜精品亚洲一区二区三区| 精品久久久久久久久久久久久久久久久久| 欧美丰满少妇xxxxx高潮对白| 在线免费观看日本欧美爱情大片| 欧美一区二区三区在线| 亚洲国产成人一区二区三区| 亚洲欧洲三级| 99久久精品久久亚洲精品| 一道本一区二区三区| 色综合天天综合网天天狠天天| 亚洲少妇中文字幕| √资源天堂中文在线| 国产精品探花在线观看| 久久精品国产亚洲av麻豆色欲|