2017-11-11 112 views
0

這是場景。我將循環訪問數千個Excel文件,並將信息拔出並插入到SQL數據庫中。到目前爲止,我可以循環遍歷所有文件並將特定單元吐出到控制檯。我也可以在SQL插入語句中插入一個靜態值。我遇到的問題是在SQL插入查詢中使用輸出到PowerShell控制檯的相同單元。我猜這只是一個語法錯誤。如何在使用PowerShell的SQL查詢中使用Excel單元格?

這是有趣的一點。我試過單引號,沒有引號,全是雙引號。

$cmd.CommandText ="INSERT INTO QuoteData (QuoteNumber) VALUES ($WorkSheet.Range("B8").Text)" 
+1

我認爲如果你運行'$ WorkSheet.Range (「B8」).Text'自己獲得該單元格的值作爲輸出。所以一個快速的解決方法是首先將該值保存到一個新變量$ cellValue = $ WorkSheet.Range(「B8」).text;'然後在你的SQL命令中使用該變量$ cmd.CommandText =「INSERT INTO QuoteData(QuoteNumber)VALUES'$ cellValue'「;'注意我還在變量周圍添加了單引號。 – gpunktschmitz

+0

這聽起來像一個ETL過程。您是否考慮過[SSIS](https://docs.microsoft.com/zh-cn/sql/integration-services/sql-server-integration-services)? – vonPryz

+0

感謝gpunktschmitz,把它放在一個新變量中確實有效。理想情況下,儘管我想弄清楚如何讓它在沒有變量的情況下工作。 VonPryz,我從來沒有用過它,但我會研究它。這個項目的一部分是一個學習經驗,所以知道如何做到這一點將是有益的。 – Zach

回答

0

這是否適合您?

$ cmd.CommandText = 「INSERT INTO QuoteData(QuoteNumber)VALUES( ' 」+ $ WorkSheet.Range( 'B8')。文字+「')」

+0

它確實如此!非常感謝Rob。謝謝gpunktschmitz和vonPryz。 – Zach

+0

不客氣。 –

相關問題