excel中电话记录数据导入到sqlserver,字符串电话或者数字电话为null的解决方案!

1,写sql来导入比在界面上点来点去效率高多了

 

SELECT * INTO a6
FROM OpenDataSource
('Microsoft.Jet.OLEDB.4.0','Data Source="C:/1.xls";Extended properties="Excel 5.0;HDR=Yes;IMEX=1;"')...[Sheet1$]

2,修改注册表,将TypeGuessRows值设置成70000,超过excel的最大行记录,不然字符串与数字的电话无法并存

 

IMEX是用来告诉驱动程序使用Excel文件的模式,其值有0、1、2三种,分别代表导出、导入、混合模式。当我们设置IMEX=1时将强制混合数据转换为文本,
但仅仅这种设置并不可靠,IMEX=1只确保在某列前8行数据至少有一个是文本项的时候才起作用,它只是把查找前8行数据中数据类型占优选择的行为作了略微的改变。
例如某列前8行数据全为纯数字,那么它仍然以数字类型作为该列的数据类型,随后行里的含有文本的数据仍然变空。
另一个改进的措施是IMEX=1与注册表值TypeGuessRows配合使用,TypeGuessRows 值决定了ISAM 驱动程序从前几条数据采样确定数据类型,默认为“8”。
可以通过修改“HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft /Jet/4.0/Engines/Excel”下的该注册表值来更改采样行数。但是这种改进还是没有根本上解决问题,
即使我们把IMEX设为“1”, TypeGuessRows设得再大,例如1000,假设数据表有1001行,某列前1000行全为纯数字,该列的第1001行又是一个文本,
ISAM驱动的这种机制还是让这列的数据变成空。

 

当然了这个不是我最先发现的,我是在网上搜索了很多文章总结出来的,算是站在前辈们的肩膀上吧!

你可能感兴趣的:(sql,properties,Excel,null,sqlserver,电话)