0

我想使用 BIDS 自动创建一个表。当数据结构未知时,我将如何自动创建一个新表?

我会做的SQL示例:

SELECT * INTO <NEW_TABLE> FROM <ORIGINAL_TABLE>

但是,我得到了数据集。转换它并想在不知道结构的情况下创建一个表。

有没有办法做到这一点?

4

1 回答 1

0

您可以根据查询结果定义表的元数据,排序。无法确定身份属性、唯一约束、默认值、主键等某些内容,但如果您只想要列名和数据类型但没有数据,那么您所拥有的基本上就是您所需要的

SELECT *
INTO
    <NEW_TABLE>
FROM
    <ORIGINAL_TABLEs and/or many joins>
WHERE
    NULL = NULL

where 子句是诀窍。只需使用一个永远不会成立的条件。查询将进行评估,您将获得所有已定义的列名及其类型,但不会在新表中填充任何数据。

您可能有兴趣用存在检查来包装它。如果表存在则删除表,如果表已存在则不创建表。我不确定什么适合您的情况,但检查将是

IF EXISTS (SELECT * FROM sys.tables T WHERE T.name = N'MyTable' AND T.schema_id = SCHEMA_ID('mySchema'))
BEGIN
    -- Take action here as the table exists (or not)
END
于 2013-07-12T16:44:41.447 回答