循环csv-逐文件导入SQL

时间:2019-05-27 12:09:13

标签: sql powershell loops csv

我尝试编写一个简短的脚本,该脚本循环将csv文件导入到要放入导入文件夹($ sourceSQL)的SQL数据表中。每个csv文件包含一行信息(此处为三列)。为了确保文件已成功写入数据表,我检查是否可以在表中找到唯一的ID。 到目前为止,它可以与第一个文件一起使用。但是,第二个文件仅被移动到目标文件夹而没有被写入数据表。我找不到问题。是因为$ data变量吗?

$StartButton.Add_Click({
$script:ActiveLoop   = $true

while ($script:ActiveLoop){

   If (Test-Path $sourceSQL){ 
     $data = $null
     Do{
       $data = import-csv $impcsv -Header A,B,C
       foreach($i in $data)
       { 
       $Id = $i.A
       $State = $i.B 
       $Sequence = $i.C

       $query = INSERT INTO $SQLTable (Id, State, Sequence)
       VALUES ('$Id','$State','$Sequence')"
       $impcsv = invoke-sqlcmd -Database $SQLDatabase -Query $query  -serverinstance $SQLInstance -Username $SQLUsername -Password $SQLPassword}

      $SqlQueryId = "SELECT TOP 1 Id from $SQLTable ORDER BY Id DESC"
      $SqlConnection = New-Object System.Data.SqlClient.SqlConnection 
      $SqlConnection.ConnectionString = "Server = $SQLInstance; Database = $SQLDatabase; User ID = $SQLUsername; Password = $SQLPassword"
      $SqlCmd = New-Object System.Data.SqlClient.SqlCommand 
      $SqlCmd.CommandText = $SqlQueryId 
      $SqlCmd.Connection = $SqlConnection
      $SqlConnection.Open() 
      $IdCheck= [string]$SqlCmd.ExecuteScalar()
      $SqlConnection.Close()
     } Until ($Id -eq $IdCheck)

   Move-Item $sourceSQL -Destination $destinationSQL

   }   
   [System.Windows.Forms.Application]::DoEvents()
 }
 })
 $objForm.Controls.Add($StartButton)

0 个答案:

没有答案