我使用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。 还有其他解决方案吗?
答案 0 :(得分:0)
只有在特定文件中只有TRUE或FALSE值时才会出现问题(因为在这种情况下,即使在遍历所有行之后也无法知道实际数据类型)。 (如果导入的文件中有可用的标题,则可以设置 TypeGuessRows = 1 以仅从顶行猜测数据类型)
解决问题的方法之一是打开Excel,选择列(使用TRUE / FALSE),右键单击并选择"格式化单元格..."从弹出菜单中。在数字选项卡下,选择文本作为类别。点击确定。
另一种方法是在插入后立即更新行。
感谢。