我有几个问题,我被困的任务,任何答案都将不胜感激。
我必须从平面文件(CSV)中提取数据作为输入,并根据位置将数据以特定格式加载到目标表中。
例如,如果我有包含某些数据的order_id,Total_sales,Date_Ordered
,则必须提取数据并将其加载到如下表中:
total_sales
被插入到表中的total_sales
列中,其数值数据类型为10.。
ccyy-mm-dd.hh.mm.ss.xxxxxxxx
(在这里,x
必须填充0)。也许我没有正确的想法来解决这个问题--任何解决方案都会很感激。
我尝试了以下几种方法:
例如,如果我有一个长度为4的Orderid,并且在平面文件中有一个类似于201
的order id,那么当它加载到表中时,它必须更改为0201
。
请给我一些关于如何处理这个问题的建议。
发布于 2011-08-20 05:46:48
假设您有以下格式的csv文件
order_id,Total_sales,Date_Ordered
1,123.23,01/01/2010
2,242.20,02/01/2010
3,34.23,3/01/2010
4,9032.23,19/01/2010
我首先要创建一个平面文件源(在数据流任务中),但不要让它固定宽度,而是将格式设置为分隔。在第一个数据行中勾选列名。在“列”选项卡上,确保行分隔符设置为"{CR}{LF}“,并将列分隔符设置为”逗号(,)“。最后,在“高级”选项卡上,将每一列的数据类型设置为整数、十进制和日期。
您提到,在将数字数据类型存储到数据库中时,要使用前导为零的数字数据类型。数据库中的数字数据类型往往不包含前导零。因此有两个选项;要么将数据保存为目标系统中的数据类型(int、十进制和dateTime),要么使用派生列控件将其转换为字符串。如果决定将它们存储为字符串,则添加如下所示的表达式
"00000" + (DT_WSTR, 5) [order_id]
对于派生列控件,将添加5个前导零来排序id (别忘了将数据类型长度设置为5),并导致订单id为"00001“。
在数据流目标中创建目标,并相应地进行表/字段映射(或者让SSIS为您创建一个新的表/映射)。
https://stackoverflow.com/questions/6868949
复制相似问题