【问题标题】:How do I use an Excel cell inside of a SQL query using PowerShell?如何使用 PowerShell 在 SQL 查询中使用 Excel 单元格?
【发布时间】: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


【解决方案1】:

这对你有用吗?

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

【讨论】:

  • 确实如此!非常感谢罗布。也感谢 gpunktschmitz 和 vonPryz。
猜你喜欢
  • 2017-03-06
  • 1970-01-01
  • 2021-01-27
  • 1970-01-01
  • 1970-01-01
  • 2020-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多