名站网址导航为大家提供关于数据库教程相关的教程网站知识。
概述分享SQL Server删除重复行的6个具体相关方法
复制具体相关代码 具体相关代码如下:,delect table where id not in ( select max(id) from table group by col1,col2,col3... ),复制具体相关代码 具体相关代码如下:,select * into #aa from table group by id1,id2,.... delete table insert into table select * from #aa,复制具体相关代码 具体相关代码如下:,select identity(int,1,1) as id,* into #temp from tabel delect # where id not in ( select max(id) fro,复制具体相关代码 具体相关代码如下:,select * from table where col1 ',' col2 ','...col5 in ( select max(col1 ',' col2 ','...col5) from ta,复制具体相关代码 具体相关代码如下:,select identity(int,1,1) as id,* into #temp from tabel select * from #temp where id in ( select max(,复制具体相关代码 具体相关代码如下:,select distinct * into #temp from tablename delete tablename go insert tablename select * from #temp
--------------------------------------------------------------------------------
在平时的工作中,我会经常的碰到这样需要合并SQL脚本的问题。如,有很多的SQL脚本网站网站文件,需要按照一定的先后顺序,再生成一个合并SQL脚本网站网站文件,然后再发布到用户SQL Server 站点服务器上。
合并SQL脚本网站网站文件,最直接的具体相关方法就是新建1个空白的SQL脚本网站网站文件,再把需要合并的SQL脚本网站网站文件内容复制到新建的SQL网站网站文件中。当初,我合并脚本的操作办法具体相关方法与刚说的有类似。我在Microsoft SQL Server Management Studio(MSSMS)新建一个查询,再把要合并的SQL脚本网站网站文件,一个一个的打开,并复制内容到新建查询中,然后生成合并脚本网站网站文件。
上面的具体相关方法,对于几个SQL脚本网站网站文件合并来说,似乎没什么问题。但是,当咱们要合并的脚本很多,一网站网站文件一个网站网站文件的内容复制,是比较繁琐的事情,要是能有1个简单合并脚本相关工具就最好不过了。下面介绍我写的两个合并SQL脚本网站网站文件的存储过程.
第1个存储过程,只要调用sp_OACreate实现合并SQL脚本网站网站文件。
复制具体相关代码 具体相关代码如下:
use master
Go
if object_id('sp_ScriptMerge') Is Not Null
Drop proc sp_ScriptMerge
Go
Create Proc sp_ScriptMerge
(
@Path nvarchar(1024),
@FilesList nvarchar(max)= null,
@NewFileName nvarchar(1024)=null
)
As
/*合并SQL脚本网站网站文件(SQL)V1.0 Andy 2011-9-1*/
Declare
@ScriptNr nchar(21),
@subdirectoryStr nvarchar(512),
@Dir nvarchar(1024),
@ScriptCount int
Declare @subdirectoryTB Table (subdirectory nvarchar(512),depth smallint,[file] smallint)
Declare @tmp table(row smallint identity primary key,fileName nvarchar(512))
Set Nocount on
if right(@Path,1)<>'\' Set @Path=@Path '\'
If Isnull(@NewFileName,'')='' Set @NewFileName=N'合并脚本-' Convert(nvarchar(8),getdate(),112)
if lower(right(@NewFileName,4))<>'.sql' Set @NewFileName=@NewFileName '.sql'
Set @NewFileName=@Path @NewFileName
Set @ScriptNr='Nr: ' Replace(replace(Replace(replace(convert(nvarchar(23),getdate(),121),'-',''),':',''),' ',''),'.','')
Set @ScriptCount=0
/*读取脚本网站网站文件内容*/
if @FilesList >''
Begin
Set @FilesList='Select N''' replace(@FilesList,',',''' Union All Select N''') ''''
Insert into @tmp([fileName]) Exec(@FilesList)
End
if object_id('Tempdb..#') Is Not Null Drop Table #
Create table #(row int identity(1,1) Primary key,text nvarchar(max))
Insert into @subdirectoryTB Exec xp_dirtree @Path,1,1
Declare cur_file cursor for
Select a.subdirectory
From @subdirectoryTB As a
left Join @tmp As b ON b.fileName=a.subdirectory
Where a.[file]=1 And a.subdirectory like '%.sql'
And (b.fileName=a.subdirectory Or Not Exists(Select 1 From @tmp))
Order By isnull(b.row,0),a.subdirectory
Open cur_file
fetch next From cur_file into @subdirectoryStr
While @@FETCh_STATUS = 0
Begin
Set @ScriptCount=@ScriptCount 1
Insert into #(text) Select Char(13) Char(10) N'Go' Char(13) Char(10) N'/* ' @ScriptNr ' (' rtrim(@ScriptCount) '): ' @subdirectoryStr ' */' Char(13) Char(10) N'Go' Char(13) Char(10)
Set @Dir='Type ' @Path '"' @subdirectoryStr '"'
Insert into #(text)
Exec sys.xp_cmdshell @Dir
fetch next From cur_file into @subdirectoryStr
End
Close cur_file
Deallocate cur_file
if @ScriptCount >0 Insert into #(text) Select Char(13) Char(10) N'Go' Char(13) Char(10) N'/* ' @ScriptNr ' 合并完成(合计 ' rtrim(@ScriptCount) ' 各脚本网站网站文件). */' Char(13) Char(10) N'Go' Char(13) Char(10)
/*写入合并脚本网站网站文件*/
if @ScriptCount>0
Begin
Declare @object int,
@FileID int,
@hr int,
@src varchar(255),
@desc varchar(255),
@row int,
@text nvarchar(max)
Exec @hr=sp_OACreate 'Scripting.FileSystemObject',@object output
If @hr <> 0 Goto File_Errorhandler
Exec @hr = sp_OAMethod @object,'CreateTextFile',@FileID OUTPUT, @NewFileName
If @hr <> 0 Goto File_Errorhandler
Set @row=1
While Exists(Select 1 From # Where row=@row)
Begin
Set @text=(Select text From # Where row=@row)
Exec @hr = sp_OAMethod @FileID, 'WriteLine', NULL, @text
Set @row=@row 1
End
Goto File_Done
File_Errorhandler:
Print N'*********** 读写网站网站文件的时候发生错误 ***********'
Exec @hr=sp_OAGetErrorInfo @object, @src OUT, @desc OUT
Select convert(varbinary(4),@hr) As hr, @src As Source, @desc As Description
File_Done:
Exec @hr = sp_OADestroy @FileID
Exec @hr = sp_OADestroy @object
Print N'*********** 合并脚本完成 ***********'
Print N'合并后脚本网站网站文件: ' @NewFileName
End
Go
调用上面存储过程前,需要确认启用 OLE Automation Procedures和xp_cmdshell 选项:
复制具体相关代码 具体相关代码如下:
复制具体相关代码 具体相关代码如下:
关于数据库教程相关的教程网站知识今天我们就说到这里了,希望可以帮到大家。