SQL Server 2012 では PowerShell 強化が挙げられていたと思うのですが、今までほとんど使ったことがありませんでした。
SQL Server PowerShell
フルテキストインデックスのテスト用のファイルを varbinary(max) に大量に格納したかったので、PowerShell で作ってみました。
■PowerShell で varbinary にデータを格納
データを格納するために使用するテーブルは以下の構造となっています。
CREATE TABLE [dbo].[tbl_FullTextTest]( |
フルテキストインデックスの増分更新をするために timestamp の列を作成しています。
このテーブルに PowreShell でファイルを格納していきます。
スクリプトがこちらになります。
# Set-ExecutionPolicy -ExecutionPolicy RemoteSigned $ServerInstance=".SQL2012" $files = Get-ChildItem $InsertFilePath -Recurse | Where-Object {$_.mode -notmatch "d"} foreach ($file in $files){ |
特定のディレクトリ配下のファイルを OPENROWSET を使用してテーブルに格納していきます。
フルテキストインデックスのテスト用にファイルを挿入した日やファイルのパスなども格納しながらテーブルにデータを挿入していきます。
Invoke-Sqlcmd をパラメータクエリで実行するために配列として変数を格納しているのですが、文字列の中に変数のプロパティを展開する方法がわからず、twitter で呟いてみたところ教えていただけました。ありがとうございます!!
フルテキストインデックスのテストをする際にはそれなりなファイル量が必要になってくると思いますので一括で入れられる方法があると便利かと。