我在Excel工作簿中有8个工作表,我想将它导入到SQL Server数据库中的单独表中。
我想将8个工作表中的每一个导入到一个单独的表中,理想情况下,表名与工作表选项卡名称一致,但最初,我只是想将数据放入表中,因此任意表名都适用于现在也是。
每个工作表中的数据格式(以及扩展中的表格)是相同的(并且将是相同的),所以我认为可以使用某种循环来执行此操作。
数据如下所示:
Universe Date Symbol Shares MktValue Currency
SMALLCAP 6/30/2011 000360206 27763 606361.92 USD
SMALLCAP 6/30/2011 000361105 99643 2699407.52 USD
SMALLCAP 6/30/2011 00081T108 103305 810926.73 USD
SMALLCAP 6/30/2011 000957100 57374 1339094.76 USD
SQL中的表格格式应与以下内容保持一致:
CREATE TABLE dbo.[market1] (
[Universe_ID] char(20),
[AsOfDate] smalldatetime,
[Symbol] nvarchar(20),
[Shares] decimal(20,0),
[MktValue] decimal(20,2),
[Currency] char(3)
)
我愿意使用SQL / VBA / C ++或某些组合(因为这些是我知道且有权访问的语言)。关于如何最好地解决这个问题的任何想法?
答案 0 :(得分:2)
您可以使用SSIS或DTS包导入它们。以下是一些可以帮助您前进的参考资料。
答案 1 :(得分:1)
对于带有xlsx扩展名的Excel文件(2007或2010),我已将它们重命名为.zip并将其内容提取到目录中,并使用SQL XML Bulk Load导入工作表和引用表。当我在SQL服务器中拥有所有数据时,我使用基本的SQL查询来提取/转换所需数据到指定的工作表中。 - 这使SQL中的“消化”逻辑保持不变,并使用C#开发的最小外部VB脚本。
链接到XML数据的SQL批量加载:http://support.microsoft.com/kb/316005
答案 2 :(得分:1)
在SQL Management Studio中,右键单击数据库,然后单击“任务”,再单击“导入数据”。这将带您浏览一些屏幕并创建一个SSIS包来导入文件。在这个过程的某个时刻,它会询问你是否要保存包(我也会运行它几次,以确保它以你想要的方式导入你的数据)。保存它然后您可以通过SQL Server代理安排程序包作为作业运行。 (作业类型将是Sql Server Integration Services)。
答案 3 :(得分:0)
SELECT * INTO XLImport3 FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', '数据源= C:\ test \ xltest.xls;扩展属性= Excel 8.0')... [Customers $]
SELECT * INTO XLImport4 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0; Database = C:\ test \ xltest.xls',[Customers $])
SELECT * INTO XLImport5 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0; Database = C:\ test \ xltest.xls','SELECT * FROM [Customers $]')
SELECT * INTO XLImport2 FROM OPENQUERY(EXCELLINK, 'SELECT * FROM [Customers $]')