日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——2.19 使用bcp实施批量导出...

發布時間:2023/12/31 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——2.19 使用bcp实施批量导出... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本節書摘來自異步社區出版社《PowerShell V3—SQL Server 2012數據庫自動化運維權威指南》一書中的第2章,第2.19節,作者:【加拿大】Donabel Santos,更多章節內容可以訪問云棲社區“異步社區”公眾號查看。

2.19 使用bcp實施批量導出

本方案描述了如何用PowerShell和bcp將表內容導出到CSV文件。

2.19.1 準備

確保您可以訪問AdventureWorks2008R2數據庫。我們將Person.Person表導出到一個時間戳標記的文本文件中,通過管道符號(|)分割。

創建C:TempExports目錄,如果還沒有在你的系統中創建。

2.19.2 如何做…

1.通過“Start | Accessories | Windows PowerShell | Windows PowerShell ISE”打開PowerShell控制臺。

2.添加如下腳本,并運行。

$server = "KERRIGAN" $table = "AdventureWorks2008R2.Person.Person" $curdate = Get-Date -Format "yyyy-MM-dd_hmmtt" $foldername = "C:\Temp\Exports\" #format file name $formatfilename = "$($table)_$($curdate).fmt" #export file name $exportfilename = "$($table)_$($curdate).csv" $destination_exportfilename = "$($foldername)$($exportfilename)" $destination_formatfilename = "$($foldername)$($formatfilename)" #command to generate format file $cmdformatfile = "bcp $table format nul -T -c -t `"|`" -r `"\n`" -f `"$($destination_formatfilename)`" -S$($server)" #command to generate the export file $cmdexport = "bcp $($table) out `"$($destination_exportfilename)`" -S$($server) -T -f `"$destination_formatfilename`"" <# $cmdformatfile gives you something like this: bcp AdventureWorks2008R2.Person.Person format nul -T -c -t "|" -r "\n" –f "C:\Temp\Exports\AdventureWorks2008R2.Person.Person_2011-12-27_913PM.fmt" –S KERRIGAN  $cmdexport gives you something like this: bcp AdventureWorks2008R2.Person.Person out "C:\Temp\Exports\AdventureWorks20008R2.Person.Person_2011-12-27_913PM.csv" –S KERRIGAN -T -c –f "C:\Temp\Exports\AdventureWorks2008R2.Person.Person_2011-12-27_913PM.fmt" #> #run the format file command Invoke-Expression $cmdformatfile #delay 1 sec, give server some time to generate the format file #sleep helps us avoid race conditions Start-Sleep -s 1 #run the export command Invoke-Expression $cmdexport  #check the folder for generated file explorer.exe $foldername

2.19.3 如何實現…

使用SQL Server的bcp命令從SQL Server導出記錄可能更快。它的應用更廣泛,因為bcp提供了更可擴展的導出格式。

bcp的默認導出格式是使用跳格鍵(t)作為域分割符,使用回車換行(rn)作為換行分隔符。如果你想修改,需要創建并使用一個格式化文件來指定你想導出的格式。

在我們的方案中,我們首先用時間戳命名格式化文件和導出的文件。

$curdate = Get-Date -Format "yyyy-MM-dd_hmmtt" $foldername = "C:\Temp\Exports\" #format file name $formatfilename = "$($table)_$($curdate).fmt" #export file name $exportfilename = "$($table)_$($curdate).csv" $destination_exportfilename = "$($foldername)$($exportfilename)" $destination_formatfilename = "$($foldername)$($formatfilename)"

然后,我們創建產生格式化文件的字符串。

#command to generate format file $cmdformatfile = "bcp $table format nul -T -c -t `"|`" -r `"\n`" -f `"$($destination_formatfilename)`" -S$($server)"

注意,因為實際的命令需要使用雙引號(”),當我們創建命令時,需要通過反引號(`)轉義雙引號。

創建的命令如下所示。

bcp AdventureWorks2008R2.Person.Person format nul -T -c -t "|" -r "\n" -f "C:\Temp\Exports\AdventureWorks2008R2.Person.Person_2011-12-27_913PM.fmt" -SKERRIGAN

我們使用剛剛創建的格式化文件創建了導出記錄的命令。

#command to generate the export file $cmdexport = "bcp $($table) out `"$($destination_exportfilename)`" -S$($server) -T -f `"$destination_formatfilename`""

我們創建的命令如下。

bcp AdventureWorks2008R2.Person.Person out "C:\Temp\Exports\AdventureWorks2008R2.Person.Person_2011-12-27_913PM.csv" -SKERRIGAN -T -f "C:\Temp\Exports\AdventureWorks2008R2.Person.Person_2011-12-27_913PM.fmt"

當包含命令的字符串完成之后,我們能使用Invoke-Expression cmdlet執行這個命令。我們首先運行格式化文件創建命令,然后使用Start-Sleep cmdlet停止1秒鐘,確保已經創建了格式化文件,然后調用命令進行真正的導出工作。

#run the format file command Invoke-Expression $cmdformatfile #delay 1 sec, give server some time to generate #the format file #sleep helps us avoid race conditions Start-Sleep -s 1 #run the export command Invoke-Expression $cmdexport

如果我們不等待,所有的命令有可能執行得更快,并且導出命令有可能在格式化文件產生好之前執行。這將導致錯誤,因為bcp命令不能發現格式化文件。

最后,我們打開“Windows Explorer”,可以看到生成的文件。

#check the folder for generated file explorer.exe $foldername

2.19.4 請參閱…

使用Invoke-Sqlcmd實施批量導出方案
更多關于bcp格式化文件的選項可參見:

總結

以上是生活随笔為你收集整理的《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——2.19 使用bcp实施批量导出...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。