Циклический CSV-импорт в файл SQL файл за файлом - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь написать короткий скрипт, который циклически импортирует csv-файлы в таблицу данных SQL, которые удаляются в папку импорта ($ sourceSQL). Каждый CSV-файл состоит из одной строки информации (здесь три столбца). Чтобы убедиться, что файл был успешно записан в таблицу данных, я проверяю, можно ли найти уникальный идентификатор в таблице. Пока что работает с первым файлом. Однако второй файл перемещается только в целевую папку без записи в таблицу данных. Я не могу найти проблему. Это из-за переменной $ 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...