【问题标题】:Import Table definition (fields) from excel sheet从 Excel 工作表导入表定义(字段)
【发布时间】:2015-07-23 15:29:51
【问题描述】:

我的 excel 表包含我的表定义如下:

FieldName         FieldType
Id                Int
Name              Text

每张表代表一个不同的表,我得到了大约 20 个表,总共大约 800 个字段。我需要以最快的方式在我的数据库中创建这些表。我想到的唯一解决方案是:
1- 手动一一创建 2- 将 Excel 表字段定义复制并粘贴到 SQL 管理工作室中,并为每个字段添加/调整必要的语法以执行“创建表”查询。

我发现这两种解决方案都很耗时,有没有办法直接从 Excel 工作表中导入表格定义?

【问题讨论】:

  • 也许从每张纸上做一个 SELECT INTO ?
  • 您将需要使用 VBA 脚本。做一些研究,google excel vba create sql table 和 google excel vba For Each ws In Worksheets 然后尝试一些您可能找到的代码结果,然后返回更具体的问题。

标签: sql-server database excel


【解决方案1】:

有几种方法可以在 Excel 中构建表定义。通过 VB 脚本/宏和/或 Excel 公式。 VB 脚本将为更强大的解决方案提供机会,但可能涉及更多。但是,公式可以快速完成大部分工作。

我把一个例子和公式放在一起。在您的问题中,您提供字段名称和字段类型。为可变长度字符串字段和数字字段添加字段宽度和精度会很有帮助。您还提到您正在使用 SQL Server。在这种情况下,我会在电子表格中使用实际的 SQL Server 字段类型。例如,使用“VARCHAR”而不是“TEXT”。下面是一个例子:

|A |B |C |D |E |F -------------------------------------------------- ---------------------- 1|字段名称|字段类型|字段宽度|精度| | 2| | | | |CREATE TABLE table1 ( |键入的文本 3|ID |整数 | | |Id 整数 , |公式 4|名称 |Varchar |30 | |名称 Varchar( 30 ), |公式 5|出生日期|日期| | |DateOfBirth 日期 , |公式 6|HoursWorked|数字 |5 |2 |HoursWorked 数字(5, 2),|公式 7| | | | |) |键入的文本 8| | | | |go |键入的文本

Snapshot of table creation Excel worksheet

在示例中,E 列的第 2 行到第 8 行包含生成的 SQL 脚本。此外,E 列第 2 行只是作为文本直接输入。 E 列第 7 行和第 8 行也是如此。

对于 E 列的第 3 行到第 6 行,输入了一个公式。

E 列第 3 行中的公式如下:

=IF(ISNUMBER(D3),TRIM(CONCATENATE(A3," ",B3,"( ",C3,", ",D3,"),")),IF(ISNUMBER(C3),TRIM(CONCATENATE(A3," ",B3,"( ",C3," ",D3,"),")),TRIM(CONCATENATE(A3," ",B3," ",C3," ",D3,","))))

该公式一旦粘贴到 E 列第 3 行,就可以向下复制到第 6 行。

然后可以将 E 列第 2 行到第 8 行中的结果复制并粘贴到 SQL Server Management Studio 中以创建 table1。

注意:一旦脚本在 Management Studio 中,请删除最后一个字段定义中的“,”。之所以存在,是因为 Excel 公式不够稳健,无法阻止它出现。

【讨论】:

    猜你喜欢
    • 2014-02-13
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    相关资源
    最近更新 更多