Excel导入SQL SERVER,数字和字符会被系统自动置为NULL的解决方法

转自 http://blog.csdn.net/oraclemch/article/details/4994927

          在将Excel数据导入SQLServer过程中,SQLServer会做出判断,是采用float型还是nvarchar型来接受数据,当数据源为数字和字符的组合时,系统会出现将类型设置为float,从而将混合方式的数据设置为NULL的情况,为此有以下解决方法。

    方法一:

    将这个字段的所有数据在Excel中设置为文本格式,刚才说了本来就是希望导入SQLServer时成为字符型,但结果令人失望,不起作用。

【该方法不可行】


    方法二:

    最终网上搜索到了答案:混合数据类型列的强制解析——IMEX=1
使用 IMEX=1 选参之后,只要取样数据里是混合数据类型的列,一律强制解析为 nvarchar/ntext 文本。当然,IMEX=1 对单一数据类型列的解析是不影响的。

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

该方法可行

    注:
    1.这条语句是在SQLServer查询分析器中执行,并且要选择好数据库,否则会把要导入的数据往别的数据库中导了。
    2.Table08是数据导入后在SQLServer中的表名,属于新建,所以请确认在导入数据前数据库中没有该表名,否则会提示已存在同一表名。
    3.Data Source,不要连在一起写,中间有一空格。
    4.E:/1.xls,为Excel所在的绝对路径和数据库名。
    5.Excel 5.0,根据不同的Excel版本写5.0或8.0或其它。
    6.IMEX=1,是转换成文本输入的意思,非常重要,如果没有,就跟你直接导入效果一样。
    7.Sheet1是表名,千万别看到语句中有$就在表名后加上$,因为$是语句要加的,别画蛇添足。

你可能感兴趣的:(Excel导入SQL SERVER,数字和字符会被系统自动置为NULL的解决方法)