关于这个问题,我是excel导入已存在表里发现的,
提示违反约束限制51什么的,后来导入新建表发现原来主键列里很多值都是null;
网上找了半天其原因为:
SQLServer导入过程中,SQLServer会做出判断,是采用float型还是nvarchar型来接受数据,测试发现(没有科学依据),SQLServer采用哪一型取决于将要导入的数据中本身具有哪一型的记录数比例多,如10笔数据,有4笔没有带区号的电话号码,6笔是带区号的电话号码,那么转到SQLServer就会选择nvarchar型,结果就是4笔没有带区号的电话号码导过去之后全成了NULL,反之亦然。不管怎么样,我们最终都希望SQLServer是采用nvarchar来接受数据,毕意我们要导入的数据中有数字和其它字符混合的数据,用float型来接受是不可能的,这样只要我们解决了将纯数字的数据转换成字符型并让SQLServer接受就可以了。
百度了N多,用sql查询器,sql语句实现,本人菜鸟一枚,不会做列映射关系。
自己用了下windows自带的odbc方式导入,测试成功。
具体步骤分享一下:
1.在windows odbc(32)下建一个用户DSN:
我选的Microsoft Excel Driver 驱动,其他的有兴趣可以自己试试。
2.sql导入数据选择“.net Framework Data Provider For Odbc ”
剩下的跟普通的excel导入流程一样,不做过多截图说明。
我的使用环境:
WINDOW 10, SQL SERVER 2012.