將表資料生成sql指令碼的儲存過程
將表資料生成sql指令碼的儲存過程:
create procedure dbo.uspoutputdata
@tablename sysname
as declare @column varchar(1000)
declare @columndata varchar(1000)
declare @sql varchar(4000)
declare @xtype tinyint
declare @name sysname
declare @objectid int
declare @objectname sysname
declare @ident int
set nocount on
set @objectid=object_id(@tablename)
if @objectid is null -- 判斷物件是否存在
begin
print 'the object not exists'
return
end
set @objectname=rtrim(object_name(@objectid))
if @objectname is null or charindex(@objectname,@tablename)=0 --此判斷不嚴密
begin
print 'object not in current database'
return
end
if objectproperty(@objectid,'istable') < > 1 -- 判斷物件是否是table
begin
print 'the object is not table'
return
end
select @ident=status&0x80 from syscolumns where id=@objectid and status&0x80=0x80
if @ident is not null
print 'set identity_insert '+@tablename+' on'
declare syscolumns_cursor cursor
for select c.name,c.xtype from syscolumns c where c.id=@objectid order by c.colid
open syscolumns_cursor
set @column=''
set @columndata=''
fetch next from syscolumns_cursor into @name,@xtype
while @@fetch_status < >-1
begin
if @@fetch_status < >-2
begin
if @xtype not in(189,34,35,99,98) --timestamp不需處理,image,text,ntext,sql_variant 暫時不處理
begin
set @column=@column+case when len(@column)=0 then'' else ','end+@name
set @columndata=@columndata+case when len(@columndata)=0 then '' else ','','','
end
+case when @xtype in(167,175) then '''''''''+'+@name+'+''''''''' --varchar,char
when @xtype in(231,239) then '''n''''''+'+@name+'+''''''''' --nvarchar,nchar
when @xtype=61 then '''''''''+convert(char(23),'+@name+',121)+''''''''' --datetime
when @xtype=58 then '''''''''+convert(char(16),'+@name+',120)+''''''''' --**alldatetime
when @xtype=36 then '''''''''+convert(char(36),'+@name+')+''''''''' --uniqueidentifier
else @name end
end
end
fetch next from syscolumns_cursor into @name,@xtype
end
close syscolumns_cursor
deallocate syscolumns_cursor
set @sql='set nocount on select ''insert '+@tablename+'('+@column+') values(''as ''--'','+@columndata+','')'' from '+@tablename
print '--'+@sql
exec(@sql)
if @ident is not null
print 'set identity_insert '+@tablename+' off' go
將表中的資料生成INSERT語句
create procedure dbo outputdata tablename varchar 100 表名 asdeclare isidentity int declare columnname varchar 100 列名 declare typename varchar 100 資料型別 ...
基於SQL指令碼將資料庫表及欄位提取為C 中的類
開發時,勉不了需要使用sql直接與資料庫互動,這時對於資料庫中的表名及欄位名會使用的比較多。如果每使用一次都複製一個,實在蛋疼。所以就考慮將其做成const常量。但是資料庫中的表和欄位相當多,一個一個敲,不但累,還有可能敲錯。要保證正確,最好的辦法當然是使用工具或者指令碼。這裡提供一個sql指令碼的...
SQL將A表的現有資料新增到B表
insert into b select from a 1.1將a表中所有資訊插入到b中。a與b表結構相同,且當前資料庫中未建立該表 select into b from a 2.僅複製結構不復制資料 將a表的產品名稱新增到b表中的產品名稱欄位中 update 庫單商品表 set 產品名稱 sele...
C 將Excel資料表匯入SQL資料庫的兩種方法
實現在c 中可高效的將excel資料匯入到sqlserver資料庫中,很多人通過迴圈來拼接sql,這樣做不但容易出錯而且效率低下,最好的辦法是使用bcp,也就是system.data.sqlclient.sqlbulkcopy 類來實現。using system using system.colle...
C 將Excel資料表匯入SQL資料庫的兩種方法
最近用寫個winform程式想用excel 檔案匯入資料庫中,網上尋求辦法,找到了這個經過嘗試可以使用。方法一 實現在c 中可高效的將excel資料匯入到sqlserver資料庫中,很多人通過迴圈來拼接sql,這樣做不但容易出錯而且效率低下,最好的辦法是使用bcp,也就是system.data.sq...