我正在修复一个 C# 项目,该项目使用带有数据定义的 Excel 工作表来创建 SQL Server 中的批量插入使用的 .fmt 文件。
我的问题是 Excel 文件有时在底部有空白行,而我正在处理的 C# 解析器将检测到比包含数据定义的实际行数更高的行数。
因此,fmt 文件在其第二行上有更多的行,并且批量插入在到达底部并尝试继续读取时会引发异常。
例如,只有 50 行数据和 50 个空白行。fmt 文件的第二行将有一个 100(第一行是 SQL Server 版本)。第 3 到 52 行是 50 行数据定义。当批量插入尝试到达第 53 行时,它会返回一些列异常。
C# 解析器使用 Ace OleDB 12 连接到 Excel 97 格式文件。
SQL 是:
var commandText = string.Format("SELECT * FROM [{0}$]", SpreadSheetName);
我试图在 SQL 代码中添加 WHERE 子句,以仅选择具有非空“A”列的行,但这不起作用。
SELECT * FROM [{0}$] WHERE [A] <> ''
有没有一种方法可以使用一些 SQL 代码来增强命令文本,以便仅从满足特定条件的 Excel 中提取数据行?