我如何让这个 SQL 语句写入一个空的 Excel 表中,以获取除第一个之外的行?

Posted

技术标签:

【中文标题】我如何让这个 SQL 语句写入一个空的 Excel 表中,以获取除第一个之外的行?【英文标题】:How do I get this SQL statement to write to an empty excel sheet for the rows beyond the first one? 【发布时间】:2019-05-02 19:49:15 【问题描述】:

我正在尝试使用 OleDB 12 将存储为自动化工具中的局部变量的一些数据发送到 Excel 工作表。到目前为止,我的代码(如下)是我想出的用于成功写入数据的代码到模板化 Excel 工作表的第一行(标题已填写)。我的问题是每次后续迭代都不会在第一次成功(索引 2)后将数据写入任何行。

我尝试更改 where 子句以使用行索引而不是查找空行,但这不成功并返回错误。我还尝试利用“INSERT INTO”语句,该语句也在我尝试编写语句的每一种方式中返回令人困惑的运行时错误。你不能在 Oledb 中使用'INSERT'吗?

更新语句(半成功):

UPDATE [Sheet1$] 
SET [SAP_ID] = %SapEmployeeNumber%
WHERE [SAP_ID] IS NULL;

插入语句(还没有开始工作):

INSERT INTO Sheet1$ (SAP_ID)
VALUES %SapEmployeeNumber%
WHERE [SAP_ID] IS NULL

期望将数据写入第一个空行(也就是说,员工编号为空)。

【问题讨论】:

那么发生了什么?它是在第一行之后抛出错误,还是只是写入并覆盖该行? 感谢您的回复。什么都没有发生;没有错误,也没有任何数据调整。 什么都没有发生?所以,当你运行你的代码时,它只是......运行,什么都不做,完成了? 没错。不会对 Excel 工作表进行任何更新。现有数据不受影响。但是,请记住,这只是在第一次尝试之后,我能够写入数据。只有在第一次迭代之后似乎什么都没有发生。 嗯,那不是什么都没有发生,是吗?第一次写入数据,然后在后续迭代中写入。 【参考方案1】:

首先:INSERT 语句 NEVER 有一个 WHERE 子句 - check the official MS docs on INSERT

其次:您需要将VALUES 部分中的值放入括号中,如下所示:

INSERT INTO Sheet1$ (SAP_ID)
VALUES (%SapEmployeeNumber%)

【讨论】:

啊!很高兴知道,谢谢。我继续将变量包裹在大括号中。不幸的是,我仍然看到这个错误:“运行时错误:SQL 语句中的错误:INSERT INTO 语句中的语法错误。” 术语注释:[ ] 大括号或方括号 花括号/方括号 ( ) 圆括号

以上是关于我如何让这个 SQL 语句写入一个空的 Excel 表中,以获取除第一个之外的行?的主要内容,如果未能解决你的问题,请参考以下文章

用 INSERT 语句 向数据库 插入 可以为空的 INT型数据

Excel 目标没有输入列

请问excel查询语句如何写?

如何在 Excel 中生成的 SQL 插入语句中获取行数?

如何将Excel数据转换为SQL脚本

SQL 语句 时间递增 急 急 急 急 急 急