你如何使用OPENROWSET处理铸造问题?

时间:2016-09-19 18:09:16

标签: tsql etl

我正在尝试使用仅包含sql查询中的键的txt文件。

SELECT
*
FROM
MyTable
JOIN
OPENROWSET (
         BULK '<File-Of-Ids>.txt',
         FORMATFILE = '<Format-File>.txt'
) B ON MyTable.Id  = B.Id
WHERE 
<a field> = <a value> AND <another field> = <another value>

但是我收到以下错误:将数据类型nvarchar转换为bigint时出错。

对我来说很明显,需要对文件的输入进行一些转换。任何人都能指出我正确的方向吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

其中一个ID列的内容不是0-9。这可能不是设计上的。但你可以将它们都投射到VARCHAR来解决这个问题。您可能希望检查数据并清理它。

CONVERT(VARCHAR, MyTable.Id) = CONVERT(VARCHAR, B.Id)

您还可以将.txt文件带入声明和格式化的TEMP TABLE。这样,如果源文件与temp不匹配,则会引发错误。