Sql server 如何从SSIS中的文本文件中将具有NULL值的列读取为NULL,而不必将其替换为随机值
这是一个简单的任务,我已经尝试了一些不起作用的事情,我将在这里列出所有的尝试 任务:从以“,”分隔的文本文件中获取数据,并移动到SQL Server中现有的空表中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
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中导入文本文件时如何使用替换功能?