我每天被提供的excel文件包含一个空格,其中一个数字应该是整数。当我简单地通过替换并在查询中转换来替换它时,这是很容易修复的。但是,现在我从.NET核心切换到了NodeJS,当我尝试使用相同的查询时,它并没有像预期的那样进行。下面是我正在处理的查询。
"INSERT INTO table SELECT ANvarChar, CONVERT(INT, replace(AVarchar,' ', '')), AnotherVarCharFROM TempImport"当我通过C#运行它时,使内部server数据库的worked工作正常,但是现在我使用mssql在linux上做了同样的工作。
"BULK INSERT TempImport FROM '" + csvFilePath + "' WITH (FIELDTERMINATOR = '||', ROWTERMINATOR = '\n');"它抛出错误:
RequestError:当将varchar值'AVarchar‘转换为数据类型int时,转换失败。
很明显,在这种情况下,转换和替换不起作用,我能做什么呢?我已经尝试了通过转换器,在下载期间,没有任何运气。
发布于 2018-11-27 15:22:57
替换后的角色可以是空间以外的东西。您可以检查数据是否包含以下替换后的空间:
SELECT * FROM (
SELECT ANvarChar, replace(AVarchar,' ', '') as TEST, AnotherVarChar FROM TempImport
) as Conv
WHERE TEST LIKE '% %'这不应返回任何行。在这种情况下,应该添加其他空格替换(就像Zeki在注释中建议的那样)。
发布于 2018-11-27 15:37:14
我发现了这个问题,我忘了从CSV文件中删除列名。显然,列名不能导入到整数中,从而导致崩溃。
https://stackoverflow.com/questions/53502145
复制相似问题