我有一个包含 2GB 数据的 SQL Sever 表。我可以为文件创建脚本。但是脚本文件没有打开。我想将该脚本文件拆分为多个脚本文件。
前段时间我写了一个 Powershell 脚本,它将一个巨大的 SQL 脚本分成更易于管理的块。(这样做的原因是将整个数据库从 2008R2 导出到不同组织的 2008 系统。)
较小的文件可以使用 Management Studio 或通过运行sqlcmd -i
. 脚本如下。它使用 25000 行作为限制,在我的测试用例中,它创建了每个大约 6 Mb 的 sql 文件。调整$MAX
以适合您的特定需求。
$src = "c:\temp\myBigScript.sql"
$dst = "c:\temp\mySmallScript-{0}.sql"
$reader = new-object IO.StreamReader($src)
$count = 1
$filename = ($dst -f ($count))
$row = 0
$MAX = 25000
$sb = new-object Text.StringBuilder
# Read the source row by row into a buffer
while(($line = $reader.ReadLine()) -ne $null){
$row++
[void]$sb.Append($line)
[void]$sb.Append([Environment]::NewLine)
# Till $MAX rows are read
if($row -ge $MAX){
# Write the buffer contents into a file and reset the buffer
add-content -path $filename -value $($sb.ToString())
$sb = new-object Text.StringBuilder
++$count
$filename = ($dst -f ($count))
$row = 0
}
}
$reader.Close()
Run Code Online (Sandbox Code Playgroud)
至于如何输入数据,for /l
cmd 会话中的循环效果很好。将循环上限更改为实际文件数,而不是使用8
.
for /l %i in (1 1 8) do sqlcmd -S myServer\myInstance -E -i mySmallScript-%i.sql
Run Code Online (Sandbox Code Playgroud)
您可以根据您的数据-Encoding UTF8
在 powrshell 脚本add-content
行或任何编码类型中使用,例如
add-content -Encoding UTF8 -path $filename -value $($sb.ToString())
Run Code Online (Sandbox Code Playgroud)
这将修复要正确添加的 Unicode 字符。
归档时间: |
|
查看次数: |
3286 次 |
最近记录: |