我每天提供的一个excel文件在其中一个数字中应该包含一个整数,其中包含一个空格。当我只是通过替换并在查询中进行转换来替换它时,此问题很容易修复。但是,现在我从.NET Core切换到NodeJS,当我尝试使用相同的查询时,它并没有按预期进行。这是我正在使用的查询。
"INSERT INTO table SELECT ANvarChar, CONVERT(INT, replace(AVarchar,' ', '')), AnotherVarCharFROM TempImport"
当我通过C#运行它时,将内部SQL Server数据库作为目标即可,但是现在我在Linux上使用mssql服务器进行了同样的操作。
"BULK INSERT TempImport FROM '" + csvFilePath + "' WITH (FIELDTERMINATOR = '||', ROWTERMINATOR = '\n');"
它引发错误:
RequestError:转换varchar值时转换失败 “ AVarchar”为数据类型int。
很明显,转换和替换在这种情况下不起作用,我该怎么办? 我已经尝试通过转换器执行此操作,并且在下载过程中没有任何运气。
答案 0 :(得分:0)
替换后的字符可能不是空格。您可以像这样检查替换后数据中是否包含空间:
SELECT * FROM (
SELECT ANvarChar, replace(AVarchar,' ', '') as TEST, AnotherVarChar FROM TempImport
) as Conv
WHERE TEST LIKE '% %'
这不应返回任何行。在这种情况下,应该添加其他空格替代(例如Zeki Gumus在评论中建议的一种)。
答案 1 :(得分:0)
我发现了问题,我忘了从CSV文件中删除列名。显然,列名不能导入为整数,这会导致崩溃。