当前位置:首页 » 编程语言 » sql自动生成脚本
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql自动生成脚本

发布时间: 2022-08-23 11:04:09

‘壹’ sql中怎么样自动生成表的更新脚本

如建立了个表是 WoolenDeliveDetail,更新表的存储过程是UP_WoolenDeliveDetailCREATE PROCEDURE UP_WoolenDeliveDetail @INTUpdateID INT,--为-1 删除0 修改1新增 @INTDeDetailID INT, @INTDeID INT, @INTColorID INT, @NVD1 NVARCHAR(20), @NVD2 NVARCHAR(20), @NVD3 NVARCHAR(20), @NVD4 NVARCHAR(20), @NVD5 NVARCHAR(20), @NVD6 NVARCHAR(20), @NVD7 NVARCHAR(20), @NVD8 NVARCHAR(20), @NVD9 NVARCHAR(20), @NVD10 NVARCHAR(20) AS IF (@INTUpdateID=0) Begin UPDATE WoolenDeliveDetail SET DeID=@INTDeID,ColorID=@INTColorID, D1=@NVD1,D2=@NVD2,D3=@NVD3,D4=@NVD4,D5=@NVD5,D6=@NVD6, D7=@NVD7,D8=@NVD8,D9=@NVD9,D10=@NVD10 WHERE DeDetailID=@INTDeDetailID End ELSE IF (@INTUpdateID=1) Begin SET @INTDeDetailID=(Select ISNULL(MAX(DeDetailID),0) From WoolenDeliveDetail)+1--取新的ID INSERT INTO WoolenDeliveDetail (DeDetailID,DeID,ColorID, D1,D2,D3,D4,D5,D6,D7,D8,D9,D10 ) VALUES (@INTDeDetailID,@INTDeID,@INTColorID, @NVD1,@NVD2,@NVD3,@NVD4,@NVD5,@NVD6,@NVD7,@NVD8,@NVD9,@NVD10 ) End ELSE DELETE FROM WoolenDeliveDetail WHERE DeDetailID=@INTDeDetailID GO 其他的常规的数据表更新存储过程与这存储过程结构差不多。有没有方法实现,新建一表后,执行一个通用的生成更新数据的存储过程,后生成该表的更新存储脚本?? 解决方法: 用下面这个自动生成表的更新数据的存储过程:CREATE PROCEDURE SP_CreateProcre @TableName nvarchar(50) AS /* 功能: 自动生成表的更新数据的存储过程如:当建立表MyTable后,执行SP_CreateProcre ,生成表MyTable的数据更新的存储过程UP_MyTable 设计: OK_008 时间: 2006-05 备注: 1、请在查询分析器上执行:EXEC SP_CreateProcre TableName 2、由于生成的字符串长度合计很多时候存在>4000以上,所有只使用Print输出,再Copy即可。 3、该方法能生成一般表的更新数据的存储过程,其中更新格式可以根据实际情况修改。 */ DECLARE @strParameter nvarchar(3000) DECLARE @strInsert nvarchar(3000) DECLARE @strUpdate nvarchar(3000) DECLARE @strDelete nvarchar(500) DECLARE @strWhere nvarchar(100) DECLARE @strNewID nvarchar(100) DECLARE @SQL_CreateProc nvarchar(4000) SET @SQL_CreateProc='CREATE PROCEDURE UP_'+@TableName +char(13)+'@INTUpdateID int,'+' /* -1 删除 0 修改 1新增 */' SET @strParameter='' SET @strInsert='' SET @strUpdate='' SET @strWhere='' DECLARE @TName nvarchar(50),@TypeName nvarchar(50),@TypeLength nvarchar(50),@Colstat bit DECLARE Obj_Cursor CURSOR FOR SELECT * FROM FN_GetObjColInfo(@TableName) OPEN Obj_Cursor FETCH NEXT FROM Obj_Cursor INTO @TName,@TypeName,@TypeLength,@Colstat WHILE @@FETCH_STATUS=0 BEGIN --构造存储过程参数部分 SET @strParameter=@strParameter +CHAR(13)+'@'+ @TName +''+@TypeName+','--构造新增数据部分 IF @Colstat=0 SET @strInsert=@strInsert +'@'+ @TName +','--构造更新数据部分 IF (@strWhere='') BEGIN SET @strNewID='SET @'+@TName+'=(Select ISNULL(MAX('+@TName+'),0) From '+@TableName+')+1 --取新的ID' SET @strWhere=' WHERE '+@TName+'='+'@'+@TName END ELSE SET @strUpdate=@strUpdate+@TName+'='+'@'+@TName +','--构造删除数据部分 FETCH NEXT FROM Obj_Cursor INTO @TName,@TypeName,@TypeLength,@Colstat END CLOSE Obj_Cursor DEALLOCATE Obj_Cursor SET @strParameter=LEFT(@strParameter,LEN(@strParameter)-1) --去掉最右边的逗号 SET @strUpdate=LEFT(@strUpdate,LEN(@strUpdate)-1) SET @strInsert=LEFT(@strInsert,LEN(@strInsert)-1) --存储过程名、参数 PRINT @SQL_CreateProc+@strParameter +CHAR(13)+'AS'--修改PRINT 'IF (@INTUpdateID=0)' PRINT' BEGIN'+CHAR(13) PRINT CHAR(9)+'UPDATE '+@TableName+' SET '+@strUpdate+CHAR(13)+CHAR(9)+@strWhere PRINT ' END'--增加PRINT 'IF (@INTUpdateID=1)' PRINT ' BEGIN' PRINT CHAR(9)+@strNewID PRINT CHAR(9)+'INSERT INTO '+@TableName+' SELECT '+@strInsert PRINT ' END'--删除PRINT 'ELSE' PRINT ' BEGIN' PRINT CHAR(9)+'DELETE FROM '+@TableName +@strWhere PRINT ' END' PRINT 'GO' GO 其中有的自定义函数FN_GetObjColInfo,代码如下:/*功能:返回某一表的所有字段、存储过程、函数的参数信息设计:OK_008 时间:2006-05*/ CREATE FUNCTION FN_GetObjColInfo (@ObjName varchar(50)) RETURNS @Return_Table TABLE( TName nvarchar(50), TypeName nvarchar(50), TypeLength nvarchar(50), Colstat Bit ) AS BEGIN INSERT @Return_Table select b.name as 字段名,c.name as 字段类型,b.length as 字段长度,b.colstat as 是否自动增长 from sysobjects a inner join syscolumns b on a.id=b.id inner join systypes c on c.xusertype=b.xtype where a.name =@ObjName order by B.ColID RETURN END 经过自己测试,感觉还行。

‘贰’ 浅谈如何在SQL Server中生成脚本

在生成脚本过程中,有很多参数可以选择,合理的配置这些参数,可以让我们很方便的按照我们的期望生成脚本。

再后面就是确认生成选项,然后就生成了。

‘叁’ 如何将数据库sql server2008中的数据库生成脚本输出

Qzone
微信
SQL Server用SQL指令导入文件
华彩缤纷 2016-12-16 09:14
通常情况下,SQL Server要导入Excel文件,我们都是用SQL Server提供的导入工具。但其实SQL Server有更简单的方法:
1)接受数据导入的表已经存在。
insert into t1 select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,
'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$);
2)导入数据并生成表。
select * into t1 from OPENROWSET('MICROSOFT.JET.OLEDB.4.0',
'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$);
3) 导入Excel中指定的列到数据库表中指定的列。
INSERT INTO t1(a1,a2,a3) SELECT a1,a2,a3 FROM OPENROWSET 'MICROSOFT.JET.OLEDB.4.0' ,'Excel5.0; HDR=YES; DATABASE=c:\test.xls',sheet1$);
需要注意:
从“功能外围应用配置器”中选择“启动 OPENROWSET 和 OPENDATASOURCE 支持”选项。

‘肆’ 怎么生成SQL脚本

设置数据库的类型按“Tools”→“GeneratePhysicalDataModel”的顺序选择,如图设置数据库类型((1)所示。

在弹出的对话框中的“General”项的DBMS栏中选择MySQL5.0,如图设置数据库类型(2)所示。

设置数据库类型((1)

设置数据库类型(2)

设置数据库类型后就可以进行生成SQL脚本操作,按“Database”→“GenerateDatabase”的顺序选择,如图生成SQL脚本操作((1)所示。

生成SQL脚本操作((1)

在弹出的对话框中指明生成的脚本存放在哪个目录下及脚本的名字,最后单击“确定”按钮即可生成SQL脚本,如图生成SQL脚本操作(2)所示。

生成SQL脚本操作(2)

‘伍’ 如何把SQL数据库生成脚本 SQL语句

--将表数据生成SQL脚本的存储过程
CREATEPROCEDUREdbo.UspOutputData
@tablenamesysname
AS
declare@columnvarchar(1000)
declare@columndatavarchar(1000)
declare@sqlvarchar(4000)
declare@xtypetinyint
declare@namesysname
declare@objectIdint
declare@objectnamesysname
declare@identint
setnocounton
set@objectId=object_id(@tablename)
if@objectIdisnull--判断对象是否存在
begin
print'Theobjectnotexists'
return
end
set@objectname=rtrim(object_name(@objectId))
if@objectnameisnullorcharindex(@objectname,@tablename)=0--此判断不严密
begin
print'objectnotincurrentdatabase'
return
end
ifOBJECTPROPERTY(@objectId,'IsTable')<>1--判断对象是否是table
begin
print'Theobjectisnottable'
return
end
select@ident=status&0x80fromsyscolumnswhereid=@objectidandstatus&0x80=0x80
if@identisnotnull
print'SETIDENTITY_INSERT'+@TableName+'ON'
declaresyscolumns_cursorcursor
forselectc.name,[email protected]
opensyscolumns_cursor
set@column=''
set@columndata=''
fetchnextfromsyscolumns_cursorinto@name,@xtype
while@@fetch_status<>-1
begin
if@@fetch_status<>-2
begin
if@xtypenotin(189,34,35,99,98)--timestamp不需处理,image,text,ntext,sql_variant暂时不处理
begin
set@column=@column+casewhenlen(@column)=0then''else','end+@name
set@columndata=@columndata+casewhenlen(@columndata)=0then''else','','','
end
+casewhen@xtypein(167,175)then'''''''''+'+@name+'+'''''''''--varchar,char
when@xtypein(231,239)then'''N''''''+'+@name+'+'''''''''--nvarchar,nchar
when@xtype=61then'''''''''+convert(char(23),'+@name+',121)+'''''''''--datetime
when@xtype=58then'''''''''+convert(char(16),'+@name+',120)+'''''''''--smalldatetime
when@xtype=36then'''''''''+convert(char(36),'+@name+')+'''''''''--uniqueidentifier
else@nameend
end
end
fetchnextfromsyscolumns_cursorinto@name,@xtype
end
closesyscolumns_cursor
deallocatesyscolumns_cursor
set@sql='setnocountonselect''insert'+@tablename+'('+@column+')values(''as''--'','+@columndata+','')''from'+@tablename
print'--'+@sql
exec(@sql)
if@identisnotnull
print'SETIDENTITY_INSERT'+@TableName+'OFF'
GO
execUspOutputData你的表名

‘陆’ 数据库如何生成脚本文件啊,SQL2008

右键点击“数据库”,在任务中选择生成脚本
若要单独生成某类对象(如表、存储过程),
要将其中“为所选数据库编写全部对象”的勾去掉
在高级选项中,可以勾选是否生成所需的其他表的对象,
如索引、触发器、全文索引等

‘柒’ sql server 2008怎么生成脚本

1.使用SQL Server Management Studio 2008 连接数据库。 2.选中要导出数据的数据库节点,点鼠标右键,在菜单中选择“任务”->“生成脚本 3.在弹出的欢迎界面中,点“下一步” 4.在选择数据库界面,选择对应的数据库,单击“下一步”。 5.在“选择脚本选项”界面中将“编写数据的脚步”置为true。(注意:版本的选择要正确,特别是在不同版本间相互使用时尤为重要!),选择完毕单击“下一步”。 6.在“选择对象类型”界面,选择对应的类型,如:表。单击“下一步。” 7.在“选择表”界面,选择对应的关系表,然后单击“下一步”。 8.在“输出选项”界面,选择对应的输出模式,如:保存的文件。 9.在“脚本向导摘要”界面,显示前面的选择内容,查看即可,然后选择“完成”。 10.最后,打开保存的脚本文件,下图是最后生成的SQL脚本: 注意:这里一定要使用SQL Server Management Studio 2008,其它版本不行。

‘捌’ 如何将Excel中表结构数据自动生成SQL脚本的方法

一: 在本地PC新建一个Excel文件(例如:excel2007)
准备工作,左键选择excel文本左上角的图标,选择“Excle选项”。1. 点击“信任中心”->“信任中心设置”->“宏设置”->选择“启用所有宏...”选项。“开发人员宏设置”选项也勾选上。 2. 点击“信任中心”->“信任中心设置”->选择“个人信息选项”,将“文档特定设置”上面默认选择去掉,避免在保存脚本时报错。
二: 在本地PC新建一个excel文件(例如: D:\testdate.xlsx)
按快捷键“ALT + F11”进入宏编辑,输入如下代码后保存。summary()为目标生成代码,SQL()为生成SQL脚本文件代码,按条件生成SQL的脚本如下:
Sub summary()
Dim i As Integer
i = 2
ThisWorkbook.Worksheets(1).Columns(2).Clear
For Each sh In ThisWorkbook.Worksheets
If sh.Name <> " " Then
ThisWorkbook.Worksheets(1).Cells(i, 2).Value = sh.Name
ThisWorkbook.Worksheets(1).Cells(i, 2).Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
sh.Name + "!A1", TextToDisplay:=sh.Name
i = i + 1
End If
Next sh

ThisWorkbook.Worksheets(1).Cells.Select

With Selection.Font
.Name = "目录"
.Size = 9
.Strikethrough = False
.Superscript. = False
.Subscript. = False
.OutlineFont = False
.Shadow = False
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
End Sub
Sub SQL()
Dim i As Integer
i = 1
Dim ADO_Stream As Object
Dim strSQL, strDelSQL As String
Dim strTblName As String
Dim col As Long
Dim row As Long
Dim str As String
Dim PK As String
Dim cnt As Integer

PK = "PK"
Dim rowcounts As Long
rowcounts = 0
Dim filecount As Long
filecount = 0
Set ADO_Stream = CreateObject("ADODB.Stream")
ADO_Stream.Type = 2
ADO_Stream.Mode = 3
ADO_Stream.Charset = "unicode"
ADO_Stream.Open

Dim checkType As String
For Each sh In ThisWorkbook.Worksheets
cnt = 0
If sh.Name <> " " And InStr(sh.Name, "template") = 0 Then
strTblName = sh.Cells(1, 2).Value
rowcounts = 1
'Insert SQL
row = 6

Do While sh.Cells(row, 1).Value <> ""
strDelSQL = "delete from " + strTblName + " where "
strSQL = "Insert into " + strTblName + " ("
col = 1
Do While sh.Cells(3, col).Value <> ""
If col <> 1 Then
strSQL = strSQL + ", "
End If
strSQL = strSQL + sh.Cells(3, col).Value
col = col + 1
Loop
strSQL = strSQL + ") VALUES ("
col = 1
Do While sh.Cells(3, col).Value <> ""

str = Trim(CStr(sh.Cells(row, col).Value))

If InStr(Trim(CStr(sh.Cells(2, col).Value)), PK) <> 0 Then
If cnt > 0 Then
strDelSQL = strDelSQL + " and "
End If
strDelSQL = strDelSQL + Trim(CStr(sh.Cells(3, col).Value)) + " = '" + str + "'"
cnt = cnt + 1
End If
If col <> 1 Then
strSQL = strSQL + ", "
End If

If (InStr(Trim(CStr(sh.Cells(4, col).Value)), "Integer") = 0) And (InStr(Trim(CStr(sh.Cells(4, col).Value)), "Decimal") = 0) And ((InStr(Trim(CStr(sh.Cells(4, col).Value)), "DATE") = 0) Or _
((Len(str) > 0) And (InStr(Trim(CStr(sh.Cells(4, col).Value)), "DATE") > 0))) Then
If (Len(str) <= 0) And (InStr(Trim(CStr(sh.Cells(5, col).Value)), "No") = 0) Then
str = "NULL"
ElseIf InStr(Trim(CStr(sh.Cells(4, col).Value)), "DATE") > 0 Then
str = "to_date('" + str + "','yyyy-mm-dd hh24:mi:ss')"
Else
str = "'" + str + "'"
End If

strSQL = strSQL + str
ElseIf (Len(str) <= 0) And (InStr(Trim(CStr(sh.Cells(4, col).Value)), "DATE") > 0) Then
strSQL = strSQL + "NULL"
Else
If (Len(str) <= 0) And (InStr(Trim(CStr(sh.Cells(5, col).Value)), "No") = 0) Then
str = "NULL"
End If

strSQL = strSQL + str
End If

col = col + 1
Loop

strDelSQL = strDelSQL + ";" + vbCrLf
ADO_Stream.WriteText strDelSQL
strSQL = strSQL + ");" + vbCrLf
ADO_Stream.WriteText strSQL
row = row + 1
Loop
End If
i = i + 1
rowcounts = 0
filecount = 0
Next sh
ADO_Stream.SaveToFile ThisWorkbook.Path & "\MstSQL(delete by condition).txt", 2
ADO_Stream.Close
Set ADO_Stream = Nothing
End Sub
点击“保存”宏脚本,主要的一步完成。
三: 在excel文件(test.xlsx)的首页创建两个图标,分别选择右键指定宏,一个指定上面的summary(),一个指定上面的SQL()。然后就可以在后续的sheet页创建自己需要生成SQL脚本的表结构名称了,记得每个sheet页面对应一个表结构及数据,使用方法如下:
A,将需要更新的对象表数据整个sheet拷进工具中,数据只保留需要更新的数据。
B,在第2行标出主键字段,填上“PK”即可。
看看代码
http://www.51testing.com/html/41/195041-831346.html

‘玖’ 关于sql2005生成脚本的问题

sql2005的好像不会自动生成数据

只有表那些

估计你得自己手写了

我用sql2008可以生成

也很方便

如果需要可以把数据库给我、我帮你生成下

‘拾’ 如何生成SQL2012的脚本

我有个笨办法。先看你的 .MDF 文件是什么版本的。如果是低版本的,可以先在低版本的sql数据库附件上,然后在数据库上右键任务-生成脚本,生成整个数据库所有对象的create sql脚本。然后在sql2012里运行这个脚本,生成sql2012的数据库。在用VS2010连接数据库看看。