gpt4 book ai didi

powershell - 使用Powershell生成SQL创建表脚本

转载 作者:行者123 更新时间:2023-12-02 23:52:49 24 4
gpt4 key购买 nike

我想使用Powershell来使用创建表语句快速生成SQL脚本,该语句可以在现有数据库中重新创建所有表。唯一的事情是我想调整一些选项,例如关闭身份。

我只是不知道该怎么做!

我已经设置了一个$ server变量,并设置了一个名为$ tables的变量来获取该特定数据库中的所有表。
然后我使用一个循环:
foreach($ tables中的$ table)
{$ table.Script()
}

这行得通,但我只是不知道如何添加脚本选项,例如NoIdentities = $ True

谁能帮我吗?

最佳答案

我曾经不得不做很多重复的打字工作,包括生成SQL脚本来
数据库中的每个表。因此,我开发了适用于此类工作的通用工具。我将按原样包含该工具,以及该工具的示例运行,旨在
为每个表和数据库用户的每个类别生成一系列授权命令。

我的工具从CSV文件运行,而不是直接从数据库运行。我发现很容易为许多不同的任务生成CSV文件和模板。你的旅费可能会改变。也许您可以从此工具开始,并使其适应您的需求。

这是该工具和一个示例运行。

<#
.SYNOPSIS
Generates multiple expansions of a template,
driven by data in a CSV file.
.DESCRIPTION
This function is a table driven template tool.

It generates output from a template and
a driver table. The template file contains plain
text and embedded variables. The driver table
(in a csv file) has one column for each variable,
and one row for each expansion to be generated.
#>
function Expand-csv {


[CmdletBinding()]
Param(
[Parameter(Mandatory=$true)]
[string] $driver,
[Parameter(Mandatory=$true)]
[string] $template
)
Process
{
$xp = (Get-Content $template) -join "`r`n"

Import-Csv $driver | % {
$_.psobject.properties | % {Set-variable -name $_.name -value $_.value}
$ExecutionContext.InvokeCommand.ExpandString($xp)
}
}
}

# Now do a sample run of Expand-csv
# then display inputs and output

Expand-csv grants.csv grants.tmplt > grants.sql
get-content grants.tmplt
import-csv grants.csv
get-content grants.sql

这是运行上面的结果:
PS> C:\Users\David\Software\Powershell\test\sample.ps1


grant $privs
on $table
to $user;



privs table user
----- ----- ----
ALL Employees DBA
READ Employees Analyst
READ, WRITE Employees Application
ALL Departments DBA
READ Departments Analyst, Application


grant ALL
on Employees
to DBA;




grant READ
on Employees
to Analyst;




grant READ, WRITE
on Employees
to Application;




grant ALL
on Departments
to DBA;




grant READ
on Departments
to Analyst, Application;





PS>

在现实生活中,我在$ profile文件中定义了该工具,因此只要在Powershell中,它就可用。

我不确定这是否适用于您的情况。这不能解决您描述的确切情况,但是您可以调整该技术。

关于powershell - 使用Powershell生成SQL创建表脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54689532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com