日期:2014-05-17  浏览次数:20435 次

EXCEL导入SQL后数据类型问题
SELECT * into VIP20130226
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="c:\VIP20130226.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
go

定义列code,materialid,price,quantity,storeid,storename,vipwldz 全部为nvarchar(255)
excel表有如下列:(原EXCEL表)
code,materialid,price,quantity,storeid,storename, vipwldz
10101009 0 122 3 0 半成品仓  0
10103001 0 184 40 0 半成品仓  0
10103012 0 48 45 0 半成品仓  0

使用上面的导入SQL里面后 (导入SQL后),经在SQL里面查看code数据类型float......
code,materialid,price,quantity,storeid,storename, vipwldz
10101009.0 0.0 122.0 3.0 0.0 半成品仓 0.0
10103001.0 0.0 184.0 40.0 0.0 半成品仓 0.0
10103012.0 0.0 48.0 45.0 0.0 半成品仓 0.0

在SQL里面把该表改数据类型后数据就变得更离谱了

要求:如何可以设置导入后的SQL数据跟EXCEL数据一致?

------解决方案--------------------
这个是根据数据来自动判断数据类型的。文本经常就直接成数字的了。
之前是这样做的,into 一个中间表,整理数据,(包括格式),到最终要导入的表中。

如果比较固定的业务,可以使用ssis的包进行批量处理。

------解决方案--------------------
引用:
请问我在SQL里面先建立个表结构,如果可以把EXCEL指定列导入到SQL里面的表的指定列???


这个可以,excel默认格式类型为数值型,一般数值类的可以正常转换,但是字符类的话可能会转换为科学计数法,这类的数据一般可以在粘贴到excel中前,先将列设置为文本型
后设置不管用(后设置我不知道怎么调能出文本型标识的那个绿色小三角号)

现有数据的话,我一般先将其转换为bigint,然后再转换为varchar,2000有bigint类型吗~