将TXT文件按固定长度分列导入到sqlserver中

 

 需求参见

http://topic.csdn.net/u/20091113/18/6f60f154-2512-443d-ae74-418cc1968748.html?91318

 

用schema.ini的配置当然是可以,但是用ssis更方便。

步骤如下:

1)

准备一txt文件存许于d:/x.txt.内容如下:

20090054200000000000台   一体机00
2009003619          台   电话机 
2009003620000000    台111电话机 
2009003618          台   电话机 
2009001557          套   办公桌 
2009001558          套   办公桌 

 

2)

在SSMS中, test库下创建一导入表 tb.

IF OBJECT_ID('tb') IS NOT NULL DROP TABLE tb GO CREATE TABLE tb(a VARCHAR(100), b VARCHAR(100), c VARCHAR(100)) GO

3)

打开VS2005, 创建C#项目》商业智能项目》Intergration 项目

a,在控制流中拖入一数据流任务,双击数据流任务,进入数据流设置界面.

b,放置一个平面文本源,指向到x.txt,   常规选项》 格式 的下拉中选择 "固定宽度"

 

 

c, 列》选项中,拖动红线,拖到行末(你自己定义的),注意下方显示为“行宽”

 

d,行宽设置完毕后,在你需要的位置,用鼠标点击,注意下方显为“列宽”,点击的地方,则分列。

 

 

注意,界面上d 这一步是没有红点的,我标志的红点只是为了显示你应该点什么位置。

 

e, 确定后,在数据流界面拖一oledb目标,当然是指向test库下的tb表, 将平面文本源指向到它, 并设置列映射, 就可以了。然后运行项目

 

f, 结束后,回到SSMS,执行 SELECT * FROM tb

 

a b c 20090054200000000000 台 一体机00 2009003619 台 电话机 2009003620000000 台111 电话机 2009003618 台 电话机 2009001557 套 办公桌

你可能感兴趣的:(table,商业智能,sqlserver,电话,SSIS,SSMS)