Sql server 基于Excel中的定义行在SQL Server中创建表,而不使用采样

Sql server 基于Excel中的定义行在SQL Server中创建表,而不使用采样,sql-server,excel,ssis,sql-server-2012,ssis-2012,Sql Server,Excel,Ssis,Sql Server 2012,Ssis 2012,我想在SQL Server中创建一个表,并定义以下行中的列名和类型-请在图片后继续阅读。像这样: 我已经研究并了解了在excel中定义列的方法,并且在每个列下提供一些示例值,SQL Server会自动创建一个包含这些列的表,但是在对第一行(比如100行)进行采样后,列类型是“猜测”的(您可以调整采样大小)。这对我不起作用。我的表有很多变化(VarChar1、2、3、5,甚至CHAR)。因此,我希望能够使用如上所示的描述来定义它。有人有办法吗?提前非常感谢 在我的解决方案中,首先需要将定义导入表

我想在SQL Server中创建一个表,并定义以下行中的列名和类型-请在图片后继续阅读。像这样:


我已经研究并了解了在excel中定义列的方法,并且在每个列下提供一些示例值,SQL Server会自动创建一个包含这些列的表,但是在对第一行(比如100行)进行采样后,列类型是“猜测”的(您可以调整采样大小)。这对我不起作用。我的表有很多变化(VarChar1、2、3、5,甚至CHAR)。因此,我希望能够使用如上所示的描述来定义它。有人有办法吗?提前非常感谢

在我的解决方案中,首先需要将定义导入表中

然后您可以生成一个脚本并执行它来创建表

-- Sample Data in Temp Table #tt
CREATE TABLE #tt (
    fieldname VARCHAR(50)
    , datatype VARCHAR(50)
    )

INSERT INTO #tt
VALUES ('FirstName', 'varchar(20)'), ('LastName', 'varchar(20)'), ('Age', 'int')

-- Generate Script
DECLARE @sqlText VARCHAR(max) = (
        SELECT 'CREATE TABLE YourTableName (' + CHAR(13) + STUFF((
                    SELECT ', ' + fieldname + ' ' + datatype + '$$'
                    FROM #tt
                    --ORDER BY fieldname --commented out
                    FOR XML PATH('')
                    ), 1, 1, '') + ')'
        )

SET @sqlText = replace(@sqlText, '$$', CHAR(13))

PRINT @sqlText

-- Execute
EXEC (@sqlText)
在我的示例中,生成的脚本将是

CREATE TABLE YourTableName (
 Age int
, FirstName varchar(20)
, LastName varchar(20)
)

哇,谢谢你的回答:从没想过这个。“插入”部分把我甩了,但现在我明白了。我试试看它是否管用。再次感谢您的作品,再次感谢。此外,如果您觉得这个问题很有价值,请投票表决,原因是分数为零的问题甚至不会出现在搜索结果中,因此人们会不断重新搜索它们。@LearnByReading,不客气。这个问题很有趣,所以我投了赞成票;我唯一改变的是注释掉“fieldName”,因为这会重新排序原始字段列表(这是大多数人想要的)。现在保留原来的订单。