2005-08-02 t-sql store procedure 修訂為:
完全不受字段數量或字段值影響 而生成正確完整的 insert into ... sql
alter procedure z_sp_geninsertsql
( @tablename varchar(256)
,@whereclause varchar(1000) = 'where 1 = 1')as
begin
/*usage:
z_sp_geninsertsql '表名','where '
*/ declare @sql varchar(8000)
declare @sqlvalues varchar(8000)
set @sql =' ''(''' + char(13) + ','
set @sqlvalues = ' values ('''+ char(13) + ','
select @sqlvalues = @sqlvalues + cols + ' + '',' + '''' + char(13) + ','
,@sql = @sql + '''[' + name + '],''' + char(13) + ','
from
(select
case
when xtype in (48,52,56,59,60,62,104,106,108,122,127)
then 'case when '+ name + ' is null then ''null'' else ' + 'cast(' + name + ' as varchar)' + ' end'
when xtype in (58,61)
then 'case when '+ name + ' is null then ''null'' else ' + ''''''''' + ' + 'cast(' + name + ' as varchar)' + '+''''''''' + ' end'
when xtype in (167,175)
then 'case when '+ name + ' is null then ''null'' else ' + ''''''''' + ' + 'replace(' + name + ','''''''','''''''''''')' + ' + ''''''''' + ' end'
when xtype in (231,239)
then 'case when '+ name + ' is null then ''null'' else ' + '''n'''''' + ' + 'replace(' + name + ','''''''','''''''''''')' + ' + ''''''''' + ' end'
else '''null'''
end as cols
,name
from syscolumns
where id = object_id(@tablename)
--and autoval is null --忽略自增整型字段
) tset @sql = 'select ' + char(13) + '''insert into '''+ char(13) + ','
+ '''['+ @tablename + ']''' + char(13) + ','
+ left(@sql,len(@sql)-4) + '''' + char(13) + ','')' + left(@sqlvalues,len(@sqlvalues)-7) + ','')'''
+ char(13) + 'from [' + @tablename + ']'
+ char(13) + @whereclause
--select @sql -- select sql 被截斷
print @sql -- print sql 是完整正確的
exec (@sql)
/*select *
from syscolumns
where id = object_id('test') and autoval is null
*/end
不過在我的資料庫中有幾個表未能生成成功,經分析原來資料庫某些列有西文組合字元,被截斷了,遂將兩變數宣告該為:
declare @sql nvarchar(max)
declare @sqlvalues nvarchar(max)
問題解決。
生成sql表結構
dataconstruct.php created by phpstorm.user administrator date 2017 7 21 time 14 26 列子 pdo new dataconstruct tables pdo getalltablenames pdo printlog p...
hibernate 自動生成表結構
hibernate 自動生成表結構 方法 在xx.cfg.xml 裡面,或者你用spring 配置的檔案,需要屬性 value 值 validate create create drop,update create 每次載入hibernate時都會刪除上一次的生成的表,然後根據你的model類再重新...
PowerDesginer生成表結構到資料庫
繼續朋友的mysql轉sqlserver的問題。表已經逆向出來了,dbms也修改了 最後就是生成表到sqlserver資料庫中了。最後一步啦 大功即將告成。1.斷開oracle的鏈結 database disconnect 2.連線到sqlserver 操作步驟和逆向工程的一樣,這裡就不累贅了。3....