生成建立表的指令碼V2 0 PowerShell版

2021-09-06 07:01:58 字數 2842 閱讀 4999

之前寫有一篇有關《powershell應用之-生成建立表的transact-sql指令碼》,今早再拿來應用的時候,發現無法按照指定的某一些表來生成指令碼。

現在特補充這一功能,先在原來指令碼開頭位置,增加乙個變數$tableslist:

<

#****************************************===#>

##生成建立表的指令碼v2.0,包含constraints,indexes,triggers

$serverinstance=

"pc20\sql2005de

"$username=

"sa"

$password=

"pc202005

"$database=

"peripheraldatacollection

"$srciptoutputpath=

"e:\"

$tableslist=

""#要生產指令碼的表,多表使用逗號「,」分隔

<

#****************************************===#> 再在

#獲得資料庫中的使用者表

$tables=((new-object 

"microsoft.sqlserver.management.smo.server

"$serverconnection).databases[

$database]).tables | where-object -filterscript

增加篩選條件:

#獲得資料庫中的使用者表

$tables=((new-object 

"microsoft.sqlserver.management.smo.server

"$serverconnection).databases[

$database]).tables | where-object -filterscript

主要增加程式碼:

-and ( ( (

$tableslist -split 

",")  -contains

$_.name) 

-or ( 

$tableslist

-eq"") )

其中 ($tableslist -split "

,")  應用到表示式"-split"把$tableslist  轉換成列表形式,再通過「-contains」表示式,判斷轉換列表中是否包含有當前返回的table名。

-or ( $tableslist

-eq"") 部份只是應用於當$tableslist為空的情況。

生成建立表的指令碼v2.0,完整指令碼如下:

<

#****************************************===#>

##生成建立表的指令碼v2.0,包含constraints,indexes,triggers

$serverinstance=

"pc20\sql2005de

"$username=

"sa"

$password=

"pc202005

"$database=

"peripheraldatacollection

"$srciptoutputpath=

"e:\"

$tableslist=

""#要生產指令碼的表,多表使用逗號「,」分隔

<

#****************************************===#>

[system.reflection.assembly]::loadwithpartialname(

"microsoft.sqlserver.smo

") | out-null

[system.reflection.assembly]::loadwithpartialname(

"microsoft.sqlserver.connectioninfo

") | out-null

$serverconnection =new-object 

"microsoft.sqlserver.management.common.serverconnection

"$serverinstance,

$username, 

$password

try

catch

if( $serverconnection.isopen)

if( $tables)

#建立指令碼

foreach(

$tbin$tables | sort-object -property createdate,id)

write-host 

"處理完表 (

"$count"/

"$tables.count 

")"": 

"$tb.name  

$count+=1       

}

$i= "

go")

#輸出指令碼

[string]

$path=

$srciptoutputpath+

$database+

"-"+(get-date -format yyyymmdd)+

".sql

"$sript.tostring() | out

-file -filepath 

$path

}

else

}

測試:

(完.)

GS 全新的動態指令碼語言V2 0

gs 全稱gscript,前幾日剛延生的一門新的動態指令碼語言,今日再次更新,更新內容 1 解析引擎優化,採用表示式 id 效能比之前提公升近一倍.2 引用方式更新,採用 最終實體引用 模式,解決 環形引用 問題 3 語言上增加了關鍵字 typeof typecast sizeof 4 增加了暫存器...

將表資料生成SQL指令碼的儲存過程

將表資料生成sql指令碼的儲存過程 將表資料生成sql指令碼的儲存過程 create procedure dbo.uspoutputdata tablename sysname as declare column varchar 1000 declare columndata varchar 100...

db2 生成表的匯出指令碼

使用 shell 指令碼生成並匯出所有資料的 dml 指令碼,並將其重定向到 srcdb1 export.sql 檔案中。對於熟悉 db2 的使用者來說,應該知道資料庫中建立的每個表 檢視 別名均對應 syscat.tables 中一行記錄。因此可以通過相應的資料庫 select 語句就可以獲取所有...