根据 Excel 中的定义行在 SQL 服务器中创建一个 table 而不使用采样

Create a table in SQL Server based on a definition row in Excel WITHOUT using sampling

我想在 SQL 服务器中创建一个 table 并在如下行中定义列名称和类型 - 请在图片后继续阅读。像这样:

我已经研究过并知道您只需在 excel 中定义 COLUMNS 并在每列下提供一些示例值,然后 SQL 服务器会自动创建一个 table使用这些列,但列类型在第一次采样后为 "guessed",比方说 100 行(您可以调整采样大小)。这 NOT 对我有用。我的 table 有很多变体(VarChar1、2、3、5,甚至是 CHAR)。所以我希望能够使用如上所示的描述来定义它。有人有解决办法吗?非常感谢您!

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

然后你可以生成一个脚本并执行它来创建table。

-- 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)
)