Sql server 基于Excel中的定义行在SQL Server中创建表,而不使用采样
我想在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)。因此,我希望能够使用如上所示的描述来定义它。有人有办法吗?提前非常感谢 在我的解决方案中,首先需要将定义导入表
我已经研究并了解了在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”,因为这会重新排序原始字段列表(这是大多数人想要的)。现在保留原来的订单。