SQL Server:一种将Excel表格呈现到SQL Server的方法

我有50个不同的大小,列和行Excel文件。 大约400行和70列(+ -20%)。 列名称不同,行的命名也不同。

我正在寻找一种方法将所有这些乐趣都转移到SQL Server中,并在那里做东西。 例如,我想将文件从SQL Server下载到Excel,以进行更改(即使在行的标题中)并将其上传回来。 用VBA或C#。

我的问题是关于上传 – 有谁知道如何做? 你做了类似的事吗? 我应该做这样的事情吗(参见前一篇文章中的代码 – http://www.vitoshacademy.com/mssql-import-data-from-excel-to-sql-server-with-vba – 如果这样被认为是垃圾邮件我会删除它)还是有更先进的方式来做到这一点?

粗略地说,这些是我的问题:

  1. 我该怎么小心?
  2. 有什么可能的错误,我应该尽量避免?
  3. 如果你有这样的任务,你会怎么做? 例如:

    3.1。 创build一个Excel表文件;
    3.2。 阅读Excel文件的标题,
    3.3。 用它们创build列并填写数据。

或者是其他东西? 我对这样的performance并不感兴趣,等待时间长达5秒也相当不错。

我知道这个问题太广泛了,但任何想法,将不胜感激。

谢谢!

我正在寻找一种方法将所有这些乐趣都转移到SQL Server中,并在那里做东西。 例如,我想将文件从SQL Server下载到Excel,以进行更改(即使在行的标题中)并将其上传回来。 用VBA或C#。

你为什么要从数据库中“下载文件”来改变内容,然后重新上传它们? 这破坏了数据库的整个目的…

我build议你专门在数据库中工作,并通过适当的SQL语句编辑你的数据,或者,如果你不舒服,使用像SQL Developer或SQL Server Management Studio这样的工具。

我该怎么小心?

混合使用Excel和数据库。 他们有不同的目的和可能性,应该相应地使用。

有什么可能的错误,我应该尽量避免?

往上看。 检查Excel工作表中的数据,如果将其插入到数据库中,则可能需要使用特殊/保留字符进行转义。 为数据库列select匹配的数据types。 利用约束来执行一定程度的数据质量。 还有更多,如果你是全新的数据库,这可能是一个好的开始(我确定有很多其他的教程,只要确保了解的基本概念): http : //www.techonthenet.com/ SQL_SERVER /

创build一个Excel表文件;

使用for循环遍历所有文件。 如果它们都在同一个文件夹中,那么它应该是非常直接的,如果它们在整个系统中被分布,那么你需要有一个包含所有文件path的configuration表,或者你需要考虑是否有其他逻辑来标识相关文件在你的电脑上。

要打开文件,请使用VBA中的Workbooks.Open方法。 将工作簿分配给对象,以便您可以更轻松地使用它。 这样你就可以访问所有的属性和数据。 使用这些来创build一个CREATE TABLE [...] SQL语句。 这个声明将会创build你的表格。

连接到数据库并通过ADODB.Connection对象执行所述语句。

for循环将为您的所有Excel文件执行此操作,以便每个Excel文件都有一个数据库表。

阅读Excel文件的标题

这将是上述步骤的一部分,因为您很可能需要标题信息来创build表(定义列等)。 如果您的“标题”由工作表中的第一行组成,则可以使用VBA中的Worksheet.CellsWorksheet.Range属性获取内容。

用它们创build列并填写数据。

创build列也将是创build表的一部分。 用内容填充表格可能效果相当。

使用for循环遍历每一行,并为每一行创build一个INSERT INTO [...] SQL语句,然后执行它(或者如果可行的话,创build一个数组来存储所有插入语句并批量执行它们。我更喜欢这个,但比创build一个语句并立即执行它更高级。 不要忘记提交。


如果您有任何具体的问题,请不要犹豫。 我希望这有助于为您的项目build立框架。 如果在尝试实现整个事物的某些方面时遇到麻烦,那么StackOverflow或Google上最有可能的解决scheme就是现有解决scheme。 我认为用VBA我从来没有遇到过从未做过的事情,有大量的资源可用于获取特定问题的代码片段。