我有一個powershell腳本,它從特定目錄遞歸地寫入每個文件及其屬性。這可以工作,但目錄可能有多達1,000,000個文件。我想要做的是每個事務以1000個插入點進行批量處理。原來這裏是PS:建立批量插入語句powershell到sql
$server = ""
$Database = ""
$Path = "C:\Test"
$Connection = New-Object System.Data.SQLClient.SQLConnection
$Connection.ConnectionString = "server='$Server';database='$Database';trusted_connection=true;"
$Connection.Open()
$Command = New-Object System.Data.SQLClient.SQLCommand
$Command.Connection = $Connection
foreach($file in Get-ChildItem -Verbose -Recurse -Path $Path | Select-Object Name,Length,Mode, Directory,CreationTime, LastAccessTime, LastWriteTime) {
$fileName = $file.Name
$fileSize = ([int]$file.Length)
$fileMode = $file.Mode
$fileDirectory = $file.Directory
$fileCreationTime = [datetime]$file.CreationTime
$fileLastAccessTime = [datetime]$file.LastAccessTime
$fileLastWriteTime = [datetime]$file.LastWriteTime
$sql = "
begin
insert TestPowerShell
select '$fileName', '$fileSize', '$fileMode', '$fileDirectory', '$fileCreationTime', '$fileLastAccessTime', '$fileLastWriteTime'
end
"
$Command.CommandText = $sql
echo $sql
$Command.ExecuteNonQuery()
}
$Connection.Close()
我的想法是實現某種計數器,將繼續追加插入,直到它到達1000,然後跳出循環並執行。我無法弄清楚這個當前的設置如何在1000進行批處理,然後執行get-childitem循環,然後選擇備份。
這是非常接近我最終使用,所以我我會選擇這個作爲答案。謝謝! – VinnyGuitara