--类似这样insert 正式表(b1,b2,...,b5,其他字段) select b1=case when isnumeric(b1) then b1 else 0 end --如果是数字型,则导入,否则用0代替 ,b2=case when isnumeric(b2) then b2 else 0 end ... ,b5=case when isnumeric(b4) then b2 else 0 end ,其他字段 from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'Excel 8.0;IMEX=1;HDR=YES;DATABASE=c:\test.xls'--c:\test.xls是excel文件名 ,sheet1$) --sheet1$是工作表名+$
EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""'/*********** 导入Excel
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""'/*********** 导入Excel
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions/*动态文件名
declare @fn varchar(20),@s varchar(1000)
set @fn = 'c:\test.xls'
set @s ='''Microsoft.Jet.OLEDB.4.0'',
''Data Source="'+@fn+'";User ID=Admin;Password=;Extended properties=Excel 5.0'''
set @s = 'SELECT * FROM OpenDataSource ('+@s+')...sheet1$'
exec(@s)
*/SELECT cast(cast(科目编号 as numeric(10,2)) as nvarchar(255))+' ' 转换后的别名
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions/********************** EXCEL导到远程SQL
insert OPENDATASOURCE(
'SQLOLEDB',
'Data Source=远程ip;User ID=sa;Password=密码'
).库名.dbo.表名 (列名1,列名2)
SELECT 列名1,列名2
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 8.0;IMEX=1;HDR=YES;DATABASE=c:\test.xls' --c:\test.xls是excel文件名
,sheet1$) --sheet1$是工作表名+$
但是我这个excel表是用软件生成的,所以格式都是固定的,有没有什么编程办法实现excel列的类型转换功能呢???或者是一个插件也可以,谢谢了
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 8.0;IMEX=1;HDR=YES;DATABASE=c:\test.xls' --c:\test.xls是excel文件名
,sheet1$) --sheet1$是工作表名+$
我的其他都能正常显示,就是一列因为excel的数据类型不匹配出现 文字无法存到sql里,只要能解决如何把类型强制转换成统一的,问题就解决了阿
select b1=case when isnumeric(b1) then b1 else 0 end --如果是数字型,则导入,否则用0代替
,b2=case when isnumeric(b2) then b2 else 0 end
...
,b5=case when isnumeric(b4) then b2 else 0 end
,其他字段
from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 8.0;IMEX=1;HDR=YES;DATABASE=c:\test.xls'--c:\test.xls是excel文件名
,sheet1$) --sheet1$是工作表名+$