我需要将excel表格上传到数据库。对此我与查询excel表格上传到sqlserver的问题
SELECT * INTO temp FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\Dokumente und Einstellungen\l.varada\Desktop\BA-Control.xls',
'SELECT * FROM [qry_BA_Controlling (Report)$]')
其中,C做:\ Dokumente UND Einstellungen \ l.varada \桌面\ BA-Control.xls是从哪儿Excel文件需要获取的路径。 qry_BA_Controlling(Report)是工作表的名称。
因此,在执行查询时,会创建一个名称为“temp”的表。随着从Excel中填充的记录。
现在我在excel中有一个日期字段。有时这个字段的值没有正确地上传到临时表中。尽管它们在EXCEL中具有值,但此日期字段的值仍设置为NULL。
EDIT 我已经修改我的查询,以便,
Insert into temp Select * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=C:\Dokumente und Einstellungen\l.varada\Desktop\BA-Control.xls',
HDR=YES', 'SELECT * FROM [qry_BA_Controlling (Report)$]')
这里温度是一个已有的表,我已定义的字段[创建日期]的日期类型为varchar和上传的Excel中。然后我用转换的数据类型更改为正确的格式..
update temp set [Creation date] = CONVERT (varchar,[Creation date],101)
即使是现在它被填充NULL values..Or这种转换需要在上传工作要做。如果是这样,请让我知道。
我认为这背后的原因是,这一列的前几个值是空格,之后它有值..因为它通过检查前几行确定数据类型..然后它是分配NULL ..请提示我是另一种选择。
您是否尝试过使用GUI?我以前在openrowsets中遇到了很多问题,GUI很快就被修复了。 – 2010-07-13 10:28:47
我在网上搜索到使用GUI将excel数据导入到sql server。它将我路由到某些需要支付的共享软件代码。 能否请您详细解释或请给我一个链接。 – satya 2010-07-13 14:36:14
只是谷歌“SQL服务器数据导入/导出向导”;) 例如,请参阅:http://www.databasejournal.com/features/mssql/article.php/3580216/SQL-Server-2005-Import-- Export-Wizard.htm – 2010-07-14 10:54:19