代码之家  ›  专栏  ›  技术社区  ›  LearnByReading

使用采样在SQL Server中基于Excel WITHOUT中的定义行创建表

  •  1
  • LearnByReading  · 技术社区  · 9 年前

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

    enter image description here

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

    1 回复  |  直到 9 年前
        1
  •  1
  •   LearnByReading    9 年前

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

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

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