积极答复者
Excel 导入/导出 到SQL server 数据类型问题

问题
答案
-
使用向导(SSIS) 导入Excel 到 SQLServer 是一个非常非常麻烦的问题,尤其是设计到类型转换的时候。原因是 Excel 的 Jet 驱动有问题。
最简单的方法是使用向导将Excel文件导入到一个新的表,要让向导自动的见表,然后再在SQL 端折腾这个表。
- 已标记为答案 WeiLin QiaoModerator 2011年7月7日 2:15
-
Excel 默认看前八行来决定一列的类型的。如果前八行没有超过255的就是varchar(255),否则就是LongText。
数据库列大小如果是50的话,有时会直接truncate不抱错,但是就丢数据了。有时是会报错。
建议:1)改改数据行的顺序,让Excel能反映正确的列类型
或者2)在第一行加一行假数据,导入到数据库后删掉。
- 已标记为答案 WeiLin QiaoModerator 2011年7月7日 2:15
-
没错。但是这个默认的8行是可以通过注册表的键来修改的(TypeGuessRows)。如果加一行假数据,来强制列的数据类型,则需要将注册表的这个默认的键值改为1才起作用,另外还要将连接到 Excel 文件的连接字符串加额外的开关。
- 已标记为答案 WeiLin QiaoModerator 2011年7月7日 2:15
全部回复
-
使用向导(SSIS) 导入Excel 到 SQLServer 是一个非常非常麻烦的问题,尤其是设计到类型转换的时候。原因是 Excel 的 Jet 驱动有问题。
最简单的方法是使用向导将Excel文件导入到一个新的表,要让向导自动的见表,然后再在SQL 端折腾这个表。
- 已标记为答案 WeiLin QiaoModerator 2011年7月7日 2:15
-
Excel 默认看前八行来决定一列的类型的。如果前八行没有超过255的就是varchar(255),否则就是LongText。
数据库列大小如果是50的话,有时会直接truncate不抱错,但是就丢数据了。有时是会报错。
建议:1)改改数据行的顺序,让Excel能反映正确的列类型
或者2)在第一行加一行假数据,导入到数据库后删掉。
- 已标记为答案 WeiLin QiaoModerator 2011年7月7日 2:15
-
没错。但是这个默认的8行是可以通过注册表的键来修改的(TypeGuessRows)。如果加一行假数据,来强制列的数据类型,则需要将注册表的这个默认的键值改为1才起作用,另外还要将连接到 Excel 文件的连接字符串加额外的开关。
- 已标记为答案 WeiLin QiaoModerator 2011年7月7日 2:15