我想使用 BIDS 自动创建一个表。当数据结构未知时,我将如何自动创建一个新表?
我会做的SQL示例:
SELECT * INTO <NEW_TABLE> FROM <ORIGINAL_TABLE>
但是,我得到了数据集。转换它并想在不知道结构的情况下创建一个表。
有没有办法做到这一点?
您可以根据查询结果定义表的元数据,排序。无法确定身份属性、唯一约束、默认值、主键等某些内容,但如果您只想要列名和数据类型但没有数据,那么您所拥有的基本上就是您所需要的
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