excel有一列是编档号:例如 20040101.可是在这列里有加入了字母,例如:20070101a5,20070801E6....,导入到sqlserver的时候,只要是有字母的都变成了NULL.
导入完成了,这一列变成了float型的.我重新导入,把float 变成nvchar,可是带字母的还是不能导入.急呀,请高人指点!!在线等!!!!!!!!!
导入完成了,这一列变成了float型的.我重新导入,把float 变成nvchar,可是带字母的还是不能导入.急呀,请高人指点!!在线等!!!!!!!!!
--加选项IMEX=1就不会丢失数据了
insert tablename(c1, c2,c3)
select a,b,c
from openrowset('Microsoft.Jet.OLEDB.4.0','EXCEL 8.0;HDR=YES;User id=admin;Password=;IMEX=1;
DATABASE=C:\temp.xls', temp$)
Excel 驱动程序读取指定源中一定数量的行(默认情况下为 8 行)以推测每列的数据类型。如果推测出列可能包含混合数据类型(尤其是混合了文本数据的数值数据时),驱动程序将决定采用占多数的数据类型,并对包含其他类型数据的单元返回空值。(如果各种数据类型的数量相当,则采用数值类型。)Excel 工作表中大部分单元格格式设置选项不会影响此数据类型判断。可以通过指定导入模式来修改 Excel 驱动程序的此行为。若要指定导入模式,请在“属性”窗口中将 IMEX=1 添加到 Excel 连接管理器的连接字符串内的扩展属性值中。
select *
from openrowset('Microsoft.Jet.OLEDB.4.0','EXCEL 8.0;HDR=YES;IMEX=1;
DATABASE=d:\1.xls', [Sheet1$])
SELECT * INTO linqi
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;HDR=YES;IMEX=1;Database=d:\1.xls',
'SELECT * FROM [Sheet1$]')
1 1321
2 123a
3 1256b用
SELECT * INTO linqi
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;HDR=YES;Database=d:\1.xls',
'SELECT * FROM [Sheet1$]')
導入會有Null的數據,但是用
SELECT * INTO linqi
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;HDR=YES;IMEX=1;Database=d:\1.xls',
'SELECT * FROM [Sheet1$]')
這個就沒有問題
我google了一下,第一行是数字,第二行是字母,再配合IMEX=1才能确保数据不为空!!好笑!!你试试看!!!