我在PowerDesigner 16.5中有我的數據庫的物理數據模型,我想生成SQL Server 2012 CREATE數據庫腳本。 問題是,當我生成這樣的文件時,表的列名稱與模型在「代碼」列中定義的名稱相同,我希望它們與表格的「名稱」列中的相同。PowerDesigner 16.5 - SQL Server中的列名CREATE數據庫腳本
您知道如何強制PowerDesigner在生成之前提到的文件的過程中從「名稱」而不是「代碼」中獲取列名?
我在PowerDesigner 16.5中有我的數據庫的物理數據模型,我想生成SQL Server 2012 CREATE數據庫腳本。 問題是,當我生成這樣的文件時,表的列名稱與模型在「代碼」列中定義的名稱相同,我希望它們與表格的「名稱」列中的相同。PowerDesigner 16.5 - SQL Server中的列名CREATE數據庫腳本
您知道如何強制PowerDesigner在生成之前提到的文件的過程中從「名稱」而不是「代碼」中獲取列名?
您可以更改DBMS屬性中的SQL生成模式。在數據庫菜單中,應該有一個「編輯當前DBMS ...」菜單項,該菜單項打開包含所有生成模式的對話框。
在那裏,您可以找到包含列(列本身,表格,引用,索引等)的所有代,並將「COLUMN」(或「COLNCODE」)替換爲「COLNNAME」。
但是,請注意,發現所有這些地方可能需要進行相當多的迭代。另外,我強烈建議備份數據庫屬性文件 - * .xdb - 首先,因爲破壞某些東西相當容易,並且整個數據庫代將會被破壞。
可以更改命名約定Tools > Model Options > Naming Convention > Table > Code
下,設置Character case
爲Mixed CASe
,並Valid characters
作爲All valid
。這樣所有未來的對象將有一個Code
匹配他們的Name
。
但是...我發現稍微限制一些SQL名稱會更容易一些,以避免在使用它們的任何地方引用它們;加上它迫使我三次考慮使用它們更穩定的名稱:我避免在「負責員工」,「負責員工」,「死人推進器」之間跳過,這會更新SQL名稱;我解決了「RespEmpl」(讓所有的SQL名稱必須有4或8個字符),並保持與Name
擺弄,直到我厭倦。
OK ...我無法找到一個方法來再次申請現有對象的名稱到的代碼轉換,改變Model Options
後,所以這裏是一個腳本,做的是:
option explicit
' avoid endless loop in case of some mistake, adjust to model objects number
' set to -1 to disable
const maxcount = 1000
dim count : count = 0
dim f : set f = ActiveModel
descent f
sub descent(f)
if maxcount > 0 and count > maxcount then exit sub
output "... entering " & f.Name
dim c
for each c in f.Children
count = count + 1
if maxcount > 0 and count > maxcount then exit for
if c.ClassKind = cls_Table then
rename c
elseif isKindOf(c.ClassKind, cls_BaseFolder) then
descent c
end if
next
end sub
sub rename(o)
dim n : n = o.Code
o.setNameToCode
if o.Code <> n then output " " & o.ClassName & " " & o.Name & ", " & n & " => " & o.Code
end sub