用Schema来决定CSV文件的字段类型

  

在说这一问题之前,先看一下以下的CSV文件内容:

001,a,1,
002,b,2,
003,c,3,
004,d,4,

这是一个很简单的文件,前两个字段是字符串,最后一个是数字
我们用ADO访问时,连接如下:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\;Extended Properties="text;HDR=No;FMT=Delimited";Persist Security Info=False
然后用一个sql语句,select * from Demo#csv 来获取所有的数据
这样一来,你就会发现问题,因为第一个字段,ADO读到的是数字

如图所示: 

那么我要让第一列显示出"001"来,要怎么办呢?
解决的方法其实很简单,就是为CSV文件写一个Schema.ini

内容如下:
[Demo.csv]
Format=Delimited(,)
ColNameHeader=False
MaxScanRows=0
CharacterSet=ANSI
Col1=F1 Char Width 3
Col2=F2 Char Width 10
Col3=F3 Integer

把这个文件放到csv所在的同一目录内,然后再次打开数据集。 

可以看到,F1处的数据已经是字符串了。Schema.ini的用法可见一斑。
对于多个csv文件,也可以只用一个Schema.ini来对它们作出规定。如下:
[Demo.csv]
Format=Delimited(,)
ColNameHeader=False
MaxScanRows=0
CharacterSet=ANSI
Col1=F1 Char Width 3
Col2=F2 Char Width 10
Col3=F3 Integer

[Demo2.csv]
Format=Delimited(,)
ColNameHeader=False
MaxScanRows=0
CharacterSet=ANSI
Col1=F1 Char Width 5
Col2=F2 Char Width 5
Col3=F3 Char Width 5
Col4=F4 Char Width 5
Col5=F5 Char Width 5
Col6=F6 Char Width 5

其实就是将两个csv的定义写在了一起,用ini的Section来区分文件。
实现的效果如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值