用于excel的Openrowset:不要将True / False转换为1/0

时间:2017-11-29 03:35:32

标签: sql-server excel

我使用Openrowset导入具有"状态"的Excel。列,其值可以是" TRUE / FALSE / CANCELED"。我已经使用TypeGuessRows = 0相应地设置了注册表。当"状态" excel文件中的列包含" TRUE / FALSE / CANCELED"的值,它按预期导入为文本值。

然而问题是,当它只包含" TRUE / FALSE"时,导入的值变为" 1"和" 0"。因此,在导入多个excel文件后,我的sql表列的值为" TRUE,FALSE,CANCELLED,1,0"。如何告诉sql server始终导入为文本而不自动将TRUE / FALSE转换为1/0?我不想写一个愚蠢的sql语句来将1/0更新回TRUE / FALSE。 还有其他解决方案吗?

1 个答案:

答案 0 :(得分:0)

只有在特定文件中只有TRUE或FALSE值时才会出现问题(因为在这种情况下,即使在遍历所有行之后也无法知道实际数据类型)。 (如果导入的文件中有可用的标题,则可以设置 TypeGuessRows = 1 以仅从顶行猜测数据类型)

解决问题的方法之一是打开Excel,选择列(使用TRUE / FALSE),右键单击并选择"格式化单元格..."从弹出菜单中。在数字选项卡下,选择文本作为类别。点击确定。

另一种方法是在插入后立即更新行。

感谢。