【问题标题】:Is there an easy way to break up a database SQL script file into one file per object?有没有一种简单的方法可以将数据库 SQL 脚本文件分解为每个对象一个文件?
【发布时间】:2010-11-22 15:46:50
【问题描述】:

我有 SQL Servers Tasks -> Generate Scripts... 的输出,用于我数据库中的所有表在一个文件中。

有没有一种简单的方法可以将单个 SQL 脚本分解为每个表一个文件?

显然,如果我可以在选择 File per object 设置的情况下运行 Generate Scripts 任务,我就不会问这个了。

【问题讨论】:

    标签: database powershell sql-scripts


    【解决方案1】:

    运行任务-> 生成脚本任务。在最后的向导页面中选择“脚本到文件”并选择“每个对象的文件”。您必须为输出指定一个现有文件夹。

    【讨论】:

    • 我在问题中说我无法重新运行生成脚本任务。不过还是谢谢。
    【解决方案2】:

    使用 PowerShell。 在不知道您的 SQL 文件格式的情况下,这可能会或可能不会起作用。它至少应该给你一个起点。它开始写入“table.sql”文件,但后来将该文件重命名为 tablename.sql

    1. $lineNumber = 0 2. $inputFile = "test.sql" 3. foreach ($line in Get-Content $inputFile) { 4. if ($line -match "create table") { 5. $w = [正则表达式]::替换($line, "^.+\.\[(\w+)\].+$", '$1') 6. $outFile = "$w.sql" 7. $lineNumber = 1 8.} 9. if (($line -match "use \[dbaInventory\]") -and ($lineNumber -gt 0)) { 10. Move-Item -LiteralPath "table.sql" -Destination $outFile 11.} 12. $线 |输出文件 -FilePath table.sql -Append 13.} 14. Move-Item -LiteralPath "table.sql" -Destination $outFile

    将第 2 行更改为您当前拥有的任何组合 sql 文件,并更改第 9 行以查找适合您的脚本的任何数据库名称。

    这是我用于测试的“test.sql”文件的示例。

    使用 [dbaInventory] 去 /****** 对象:表 [dbo].[tableOne] 脚本日期:11/22/2010 12:28:55 ******/ 设置 ANSI_NULLS ON 去 设置 QUOTED_IDENTIFIER ON 去 设置 ANSI_PADDING ON 去 创建表 [dbo].[tableOne]( [colA] [smallint] NULL, [colB] [char](1) 空值, [colC] [十进制](10, 2) NULL ) 开 [主要] 去 设置 ANSI_PADDING 关闭 去 使用 [dbaInventory] 去 /****** 对象:表 [dbo].[tableTwo] 脚本日期:11/22/2010 12:28:55 ******/ 设置 ANSI_NULLS ON 去 设置 QUOTED_IDENTIFIER ON 去 设置 ANSI_PADDING ON 去 创建表 [dbo].[tableTwo]( [col_A] [char](1) 空值, [col_B] [十进制](10, 2) NULL, [col_C] [smallint] NULL, 约束 [Pk_tableTwo] 主键集群 ( [col_A] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) 开 [主要] 去 设置 ANSI_PADDING 关闭 去

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-10
      • 1970-01-01
      • 2020-02-16
      • 2019-06-17
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多