excel导入SQL Server的问题

下面这个导入语句解决了excel中含有混合的字段会导入sql server会变成null的问题,excel格式是.xls,数据库版本SQL Server 2008(SQL Server 2008需要设置的,还挺烦的,后面我会贴出来)

SELECT * into test

FROM OpenDataSource
('Microsoft.Jet.OLEDB.4.0','Data Source="E:\test.xls";
  User ID=Admin;Password=;Extended properties="Excel 5.0;
  HDR=Yes;IMEX=1;"')...[test$]

1.HDR(HeaDer Row)设置

若指定值为Yes,代表Excel档中的工作表第一行是栏位名称

若指定值为No,代表Excel档中的工作表第一行就是资料了,没有栏位名称

2.IMEX(IMport EXport mode)设置

IMEX有三种模式,各自引起的读写行动也不合,

0 is Export mode

1 is Import mode

2 is Linked mode (full capabilities)

不合的IMEX参数代表不合的读写行动,IMEX参数说明:

当 IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用处。

当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用处。

当 IMEX=2 时为“连結模式”,这个模式开启的 Excel 档案可同时增援“读取”与“写入”用处。

 

所谓“4.5010763038+14 ”只是显示用的,实际还是“450107630382345”。所以使用读取即 IMEX=1时,得到“4.5010763038+14 ”。

而 IMEX=0时,得到“450107630382345”。

这句不是太懂,我excel中的数字都是文本格式,导入到数据库中,用上面的导入语句,有的会变成科学计数的格式,这里把IMEX=1改为IMEX=0就OK了。

参考文档:http://www.cnblogs.com/panjun/archive/2012/10/19/2731106.html

 

关于导入语句中的Excel版本问题,我不是很明白。在网上查了资料,这是excel的开发版本号,但是Excel 5.0对应的是哪个版本?如果按照下面的对应关系,Excel 5.0比excel97还早,我的excel是2003版本做的,我用2007和2013编辑。

excel97   Ver. 8.0
excel2000   Ver. 9.0
excel2002(xp)   Ver. 10.0
excel2003   Ver. 11.0
excel2007   Ver. 12.0
excel2010   Ver. 14.0

image

而且导入语句中的Excel 5.0不能改为8.0,改为8.0就会出错。

posted @ 2014-04-28 11:03  cnmarkao  阅读(395)  评论(1编辑  收藏  举报