Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否将海量数据插入SQL Server?_C++_Sql_Sql Server_Excel_Vba - Fatal编程技术网

C++ 是否将海量数据插入SQL Server?

C++ 是否将海量数据插入SQL Server?,c++,sql,sql-server,excel,vba,C++,Sql,Sql Server,Excel,Vba,Excel工作簿中有8个工作表,我想将它们导入SQL Server数据库中的单独表中 我希望将8个工作表中的每一个都导入到一个单独的表中,理想情况下,表名与工作表选项卡名一致,但最初,我只想将数据导入表中,因此任意的表名暂时也可以使用 扩展后的每个工作表和表格中的数据格式都是相同的,因此我认为可以使用某种循环来实现这一点 数据如下所示: Universe Date Symbol Shares MktValue Currency SMALLCAP 6/3

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++或其他组合语言来实现这一点,因为我知道并可以使用这些语言。对于扩展名为xlsx的Excel文件2007或2010,我已将其重命名为.zip,并将其内容提取到目录中,并使用SQL XML批量加载导入工作表和参考表。当我拥有SQL server中的所有数据时,我使用基本SQL查询将所需数据提取/转换为指定的工作表。-这将在SQL中保留消解逻辑,并使用C开发的最小外部VB脚本


链接到SQL批量加载XML数据:

您可以使用SSI或DTS包导入它们。这里有几份推荐信可以帮助你


在SQL Management Studio中,右键单击数据库,然后单击任务,然后导入数据。这将引导您浏览一些屏幕,并创建一个SSIS包来导入文件。在这个过程中的某个时候,它会问你是否要保存这个包,我也会运行它几次,以确保它以你想要的方式导入你的数据。保存它,然后您可以通过SQL Server代理计划将包作为作业运行。作业类型将是Sql Server Integration Services。

您可以使用以下脚本 从OPENDATASOURCE“Microsoft.Jet.OLEDB.4.0”中选择*进入XLImport3, '数据源=C:\test\xltest.xls;扩展属性=Excel 8.0'…[Customers$]

从OPENROWSET“Microsoft.Jet.OLEDB.4.0”中选择*进入XLImport4, "excel8.0,;数据库=C:\test\xltest.xls',[Customers$]

从OPENROWSET'Microsoft.Jet.OLEDB.4.0'中选择*进入XLImport5, "excel8.0,;Database=C:\test\xltest.xls','SELECT*FROM[Customers$]'

或者可以使用下面的 从OPENQUERYEXCELLINK中选择*进入XLImport2,
“从[Customers$]中选择*”

这是您希望按计划运行的作业还是一次性导入的作业?您可以使用DTS或SSI吗?请检查Sql Server的批量导入功能。您可以将excel另存为csv,然后导入这些文件。@Robert-假设一次。通过Windows调度器将其设置为按计划运行是次要的。什么是DTS和SSI?@SebastianPiu-我计划使用批量插入作为这项工作的一部分。它是否允许导入多个工作表?@Chris-我想我应该问问您是否有Enterprise manager和security直接加载数据库?或者你只是有一个开发人员用户名和密码,所以你必须使用一个应用程序来完成吗?谢谢你的建议。我知道导入向导,但我试图避免这样做8次,每个工作表一次。没有好的编程方法来实现这一点?当然可以编程实现,但我认为这会更容易。创建导入脚本并修改每个工作表的数据源。这听起来比编写程序来读取工作表、创建表格然后输入数据更容易。另一种选择是将Excel直接连接到SQL并以这种方式加载数据;虽然包的开发要比DTS好得多,但部署和维护源代码控制是一件痛苦的事情。此外,错误处理相当糟糕,您需要一个DBA来支持它。@Juliusz您正确的SSI和DTS包可能会很麻烦,但对于导入数据,我总是发现它们是最简单的。就像我说的,你可以创建一个程序来完成这项工作,但是对于一个一次性的工作来说,它似乎比简单的导入要复杂得多。