【发布时间】:2018-04-24 08:15:01
【问题描述】:
这是场景。我将遍历数千个 Excel 文件并提取信息并将其插入 SQL 数据库。到目前为止,我可以遍历所有文件并将某些单元格吐出到控制台。我还可以在 SQL 插入语句中插入一个静态值。我遇到的问题是在 SQL 插入查询中使用我输出到 PowerShell 控制台的相同单元格。我猜这只是一个语法错误。
这是有趣的一点。我试过单引号,没有引号,双引号。
$cmd.CommandText ="INSERT INTO QuoteData (QuoteNumber) VALUES ($WorkSheet.Range("B8").Text)"
【问题讨论】:
-
我假设如果您单独运行
$WorkSheet.Range("B8").Text,您将获得该单元格的值作为输出。所以一个快速的解决方法是首先将该值保存到一个新变量$cellValue=$WorkSheet.Range("B8").Text;中,然后在你的 SQL 命令中使用该变量$cmd.CommandText ="INSERT INTO QuoteData (QuoteNumber) VALUES '$cellValue'";请注意,我还在变量周围添加了单引号。 -
这听起来像是一个 ETL 过程。你考虑过SSIS吗?
-
感谢 gpunktschmitz,将其放入新变量中确实有效。理想情况下,虽然我想弄清楚如何让它在没有变量的情况下工作。 VonPryz,我以前从未使用过它,但我会调查一下。该项目的一部分是学习体验,因此知道如何以两种方式进行操作将是有益的。
-
试试这个,让我知道它是否有效
$cmd.CommandText ="INSERT INTO QuoteData (QuoteNumber) VALUES '$($WorkSheet.Range('B8').Text)'" -
这似乎很接近,但它仍然不喜欢某些东西。它显示“'Mansfield' 附近的语法不正确”,这是 Excel 中该单元格的正确值。
标签: sql excel powershell