簡體   English   中英

如何使用 PowerShell 從 SQL Server 中的 .csv 導入數據?

[英]How to import data from .csv in SQL Server using 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()

我寫了一篇關於在 PowerShell 中使用 SQL 的博客文章,因此您可以在此處閱讀更多相關信息

如果您有可用的 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 DB 格式相同的值,否則您可能會遇到錯誤。

運行時,您將看不到任何輸出到控制台。 我建議事后查詢以確保您的值被接受。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM