SQL Server导入导出向导Datetime2字段空值转NULL问题咨询
解决SQL Server导入导出向导将空日期字段转为默认值的问题
当然可行!我之前也碰到过一模一样的情况,SQL Server导入导出向导默认会把CSV中空的日期字段转成datetime2类型的最小默认值0001-01-01 00:00:00.0000000,但有几种可靠的方法能让它识别为NULL:
方法1:在导入向导中直接配置(推荐)
这是最直接的解决方案,在向导过程中就能完成设置:
- 当走到指定表复制或查询步骤时,选中要导入的目标表,点击右侧的编辑映射按钮
- 在弹出的映射窗口里,点击下方的高级按钮,打开高级编辑器
- 在高级编辑器的输入列选项卡中,找到对应CSV里的
ExecutionDateTime列,将它的NullValue属性设置为空字符串("") - 确认目标列的类型是
datetime2且允许NULL(你已经满足这个前提),完成配置后继续导入流程,空值就会被识别为NULL了
方法2:预处理CSV文件
如果向导配置后还是没生效,可能是CSV里的“空值”其实包含隐形字符(比如空格):
- 用文本编辑器(比如Notepad++)打开CSV文件,检查
ExecutionDateTime列的空值行,确保对应位置是完全空白的,没有空格、制表符等 - 保存修改后的CSV,再重新执行导入操作
方法3:导入后批量修正(应急方案)
如果前面的方法都无法生效,可以先完成导入,再用SQL语句批量修正:
UPDATE 你的目标表名 SET ExecutionDateTime = NULL WHERE ExecutionDateTime = '0001-01-01 00:00:00.0000000';
⚠️ 注意:如果你的业务数据中确实存在0001-01-01这个有效日期值,不要用这个方法,避免误改数据
内容的提问来源于stack exchange,提问作者ProgSky
相关产品推荐
相关产品推荐

