Как импортировать данные из.csv в SQL Server с помощью PowerShell?

У меня есть следующий сценарий: Я использую PowerShell и должен импортировать данные из CSV-файла в уже созданную таблицу в базе данных SQL Server. Так что мне не нужна строка заголовка из CSV, просто запишите данные.

Вот что я сделал до сих пор:

#Setup for SQL Server connection
#SQL Server Name
$SQLServer = "APPLIK02\SQLEXPRESS"
#Database Name
$SQLDBName = "code-test"

#Create the SQL Connection Object
$SQLConn = New-Object System.Data.SQLClient.SQLConnection
#Create the SQL Command Object, to work with the Database
$SQLCmd = New-Object System.Data.SQLClient.SQLCommand

#Set the connection string one the SQL Connection Object
$SQLConn.ConnectionString = "Server=$SQLServer;Database=$SQLDBName; Integrated Security=SSPI"
#Open the connection
$SQLConn.Open()

#Handle the query with SQLCommand Object
$SQLCmd.CommandText = $query
#Provide the open connection to the Command Object as a property
$SQLCmd.Connection = $SQLConn

#Execute 
$SQLReturn=$SQLCmd.ExecuteReader()

Import-module sqlps
$tablename = "dbo."+$name

Import-CSV .\$csvFile | ForEach-Object Invoke-Sqlcmd 
  -Database $SQLDBName -ServerInstance $SQLServer 
  #-Query "insert into $tablename VALUES ('$_.Column1','$_.Column2')"
#Close
$SQLReturn.Close()  
$SQLConn.Close()

1 ответ

Решение

Я написал сообщение в блоге об использовании SQL с PowerShell, поэтому вы можете прочитать больше об этом здесь.

Мы можем сделать это легко, если у вас есть модуль SQL-PS. Просто предоставьте значения для имени вашей базы данных, имени сервера и таблицы, а затем выполните следующее:

$database = 'foxdeploy'
$server = '.'
$table = 'dbo.powershell_test'

Import-CSV .\yourcsv.csv | ForEach-Object {Invoke-Sqlcmd `
  -Database $database -ServerInstance $server `
  -Query "insert into $table VALUES ('$($_.Column1)','$($_.Column2)')"
  }

Чтобы было понятнее, замените Column1, Column2 именами столбцов в вашем CSV.

Убедитесь, что ваш CSV имеет значения в том же формате, что и база данных SQL, иначе вы можете столкнуться с ошибками.

Когда он будет запущен, вы не увидите вывод на консоль. Я бы порекомендовал сделать запрос позже, чтобы убедиться, что ваши значения приняты.

Другие вопросы по тегам