怎样把中间以不定空格为间隔符的TXT数据文件导入Sql Server中?
从纯真网络上下的IP库,解压成txt文件后,数据格式如下:
0.0.0.0 0.255.255.255 IANA CZ88.NET
1.0.0.0 1.255.255.255 IANA CZ88.NET
2.0.0.0 2.255.255.255 IANA CZ88.NET
3.0.0.0 3.255.255.255 美国 新泽西通用电气公司
4.0.0.0 4.10.255.255 美国 CZ88.NET
4.11.0.0 4.11.255.255 美国 夏威夷
4.12.0.0 4.19.77.255 美国 CZ88.NET
4.19.78.0 4.19.78.255 美国 西南政法大学
4.19.79.0 4.19.79.63 美国 Armed Forces Radio/Television
4.19.79.64 4.21.177.111 美国 CZ88.NET
4.21.177.112 4.21.177.127 美国 Kraft Group
4.21.177.128 4.21.177.255 美国 南新汉普郡学院
4.21.178.0 4.36.124.127 美国 CZ88.NET
4.36.124.128 4.36.124.255 美国 Technical Resource Connections Inc
4.36.125.0 4.36.127.255 美国 坦帕大学
4.36.128.0 4.37.215.255 美国 CZ88.NET
4.37.216.0 4.37.219.255 美国 德克萨斯女子大学
4.37.220.0 4.41.60.255 美国 CZ88.NET
4.41.61.0 4.41.61.255 美国 EARTHLINK公司
4.41.62.0 4.43.68.255 美国 CZ88.NET
4.43.69.0 4.43.69.95 美国 罗斯门特学院
三个字段以不定空格为间隔符,但是也不能把空格替换成别的,因为ip所属地区有空格,这样的数据怎么导入Sql Server中呀?直接导入时候必须选择间隔符,所一些上述数据就被认为一个字段。
但是导入Access中没有问题,可以选择固定宽度,把地区的宽度弄长一些就可以了。
呵呵,不要告诉我:先导入 Access中,然后再导入Sql Server中。
------解决方案--------------------先作为一个字段 COL1 导入数据库中的中间表 MID ,然后用substring()函数来取数据:
insert into 目标表(...)
select
rtrim(left(COL1 ,16)) as 起始IP,
rtrim(substring(COL1,17,16)) as 截至IP,
stuff(COL1,1,32, ' ') as 地区信息描述
from
MID
------解决方案--------------------直接dts都可以啊
设定为固定间隔的字段就可以了
------解决方案--------------------RTRIM()!应该用这个吧,要是会编程的话可以现将数据转换一下
------解决方案--------------------