2017-11-11 110 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

不客气。 –

相关问题