Sql server 如何从SSIS中的文本文件中将具有NULL值的列读取为NULL,而不必将其替换为随机值

Sql server 如何从SSIS中的文本文件中将具有NULL值的列读取为NULL,而不必将其替换为随机值,sql-server,ssis,null,Sql Server,Ssis,Null,这是一个简单的任务,我已经尝试了一些不起作用的事情,我将在这里列出所有的尝试 任务:从以“,”分隔的文本文件中获取数据,并移动到SQL Server中现有的空表中 我的源目标已选中“保留空值…”选项 源列和目标列之间没有不匹配的数据类型 我还在目标表中选中了“保留空值”选项 这是第一个文本文件的内容 1002,"Murphy","Diane","x5800","dmurphy@classicmodelcars.com","1",NULL,"President" 1056,"Patterson

这是一个简单的任务,我已经尝试了一些不起作用的事情,我将在这里列出所有的尝试

任务:从以“,”分隔的文本文件中获取数据,并移动到SQL Server中现有的空表中

  • 我的源目标已选中“保留空值…”选项
  • 源列和目标列之间没有不匹配的数据类型
  • 我还在目标表中选中了“保留空值”选项
  • 这是第一个文本文件的内容

     1002,"Murphy","Diane","x5800","dmurphy@classicmodelcars.com","1",NULL,"President"
     1056,"Patterson","Mary","x4611","mpatterso@classicmodelcars.com","1",1002,"VP Sales"
     1076,"Firrelli","Jeff","x9273","jfirrelli@classicmodelcars.com","1",1002,"VP Marketing"
     1088,"Patterson","William","x4871","wpatterson@classicmodelcars.com","6",1056,"Sales Manager (JAPAN, APAC)"
     1102,"Bondur","Gerard","x5408","athompson@classicmodelcars.com","4",1056,"Sale Manager (EMEA)"
    
  • 第一行在最后第二列中有一个空值,这第一行是导致错误的原因。这是旧的错误消息

    [Orders Text [70]] Error: Data conversion failed. The data conversion for column "ShippedDate" returned status value 2 and status text "The value could not be converted because of a potential loss of data.".
    
    另一个文本文件也会发生类似的情况,其中Shippeddate具有空值

    我理解,因为我是从文本文件中读取的,所以它将NULL作为文本读取,而不仅仅是NULL。因此,我可以使用派生列并使用字符串中的replace函数将其替换为另一个值

    同样在日期的情况下,看起来像这样

               2003/1/13 0:00:00
    
    1002,"Murphy","Diane","x5800","dmurphy@classicmodelcars.com","1",,"President"
    
    我甚至不能用虚构的约会来代替它们。在将其作为字符串读取、使用派生函数替换,然后使用数据转换函数转换之后,它仍然会抛出一个错误

    我的问题是“如何在SQLServer的各种数据类型中将这些值替换为NULL而不是字符串NULL”

    如果可能的话,我应该怎么做,以使它将NULL读取为NULL,而不是字符串。我希望它为NULL,而不是用一些随机值或0替换它。丢失的数据显示为丢失是很重要的。

    据我所知,TXT源文件(使用平面文件连接管理器)中的NULL(空)值仅在不存在值的情况下才存在

    所以你的记录是:

    1002,"Murphy","Diane","x5800","dmurphy@classicmodelcars.com","1",NULL,"President"
    
    。。。应该是这样的

               2003/1/13 0:00:00
    
    1002,"Murphy","Diane","x5800","dmurphy@classicmodelcars.com","1",,"President"
    
    。。。具有空值

    我认为最好的方法是将所有内容作为字符串导入,然后将“NULL”值替换为NULL(空),然后根据需要在目标数据库中格式化所有内容

    要将数据设置为NULL,可以使用“在派生列转换中添加新列”:

    ColX == "NULL" ? NULL(DT_WSTR, 50) : ColX
    
    对于日期,还可以作为字符串导入,并使用子字符串(和FINDSTRING)表达式构建用于转换为所需日期时间格式的正确格式


    BR

    所以。。。在SSIS中导入文本文件时如何使用替换功能?