根据 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)
)
我想在 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)
)