Скрипт PowerShell для обновления SQL Server с помощью CSV - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь создать скрипт, который позволяет обновлять мою базу данных SQL Server из нескольких файлов CSV с разными именами, например:

LOHNSJSHM_details.csv
ZULTNQNIW_details.csv
...

После обновления данных файл должен быть автоматически удален.

Вот что я начал делать:

If ((Get-PSSnapin | where {$_.Name -match "SqlServerCmdletSnapin100"}) -eq $null)
{
  Add-PSSnapin SqlServerCmdletSnapin100
}

If ((Get-PSSnapin | where {$_.Name -match "SqlServerProviderSnapin100"}) -eq $null)
{
  Add-PSSnapin SqlServerProviderSnapin100
}

$sql_instance_name = 'ServerSQL01\LAB'
$db_name = 'testdb'

$impcsv = ".\Example.csv"

$data = import-csv $impcsv

$count = 1

foreach($i in $data){

$reference = $i.reference
$quantity = $i.quantite

$query = "UPDATE dbo.F_ARTSTOCK (reference,quantity)
          SET quantity = '$quantity'
          WHERE reference = '$reference'"

$impcsv = invoke-sqlcmd -Database $db_name -Query $query  -serverinstance $sql_instance_name 

write-host "Processing row ..........$count" -foregroundcolor green

$count  = $count + 1

}

В моем файле 2 столбца (Ссылка, Количество), и мне нужно обновить таблицу SAGE, основываясь на ссылочных количествах вывода из каждой строки моегоCSV

Спасибо за помощь.

1 Ответ

0 голосов
/ 13 декабря 2018
If ((Get-PSSnapin | where {$_.Name -match "SqlServerCmdletSnapin100"}) -eq $null)
{
  Add-PSSnapin SqlServerCmdletSnapin100
}

If ((Get-PSSnapin | where {$_.Name -match "SqlServerProviderSnapin100"}) -eq $null)
{
  Add-PSSnapin SqlServerProviderSnapin100
}

$sql_instance_name = 'ServerSQL01\LAB'
$db_name = 'testdb'

$csv_folder = 'C:\temp'
$csv_completed_folder = 'C:\done'

# assuming only csv-files you want to import are located in $csv_folder
$csv_files = Get-Childitem -Path $csv_folder -Filter '*.csv'

foreach($file in $csv_files) {
    $impcsv = $file.FullName
    write-host "Processing file ..........$impcsv" -foregroundcolor green
    $data = import-csv $impcsv

    $count = 1

    foreach($i in $data) {

    $reference = $i.reference
    $quantity = $i.quantite

    $query = "UPDATE dbo.F_ARTSTOCK (reference,quantity)
              SET quantity = '$quantity'
              WHERE reference = '$reference'"

    $impcsv = invoke-sqlcmd -Database $db_name -Query $query  -serverinstance $sql_instance_name 

    write-host "Processing row ..........$count" -foregroundcolor green

    $count  = $count + 1

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...