這可能嗎?我得到一個大的.sql文件,其中充滿了Insert Into語句而沒有數據庫模式。我可以隨時創建表格嗎?使用Insert Into即可創建表格
下面是一個例子:
INSERT INTO [g_fuel_site] ([SiteID], ... ,[EMVEnabled])
VALUES('Sep 23 2011 3:05:51:000PM', ... ,0)
編輯:有沒有表!劇本假設我做到了!
這可能嗎?我得到一個大的.sql文件,其中充滿了Insert Into語句而沒有數據庫模式。我可以隨時創建表格嗎?使用Insert Into即可創建表格
下面是一個例子:
INSERT INTO [g_fuel_site] ([SiteID], ... ,[EMVEnabled])
VALUES('Sep 23 2011 3:05:51:000PM', ... ,0)
編輯:有沒有表!劇本假設我做到了!
亞倫打了我20秒。 有關示例更改從第一插入件:
INSERT INTO [g_fuel_site] ([SiteID],[CurrentOperatingLevelID],[CurrentPriceBookID], [NumberFuelSaleBuffers],[LinearUnitOfMeasure],[VolumeUnitOfMeasure],[PreAuthAllowed],[StackedSalesAllowed],[MaxLiveDispensers],[AllowedZeroPPUs],[MaxPPU],[MinPPU],[InitialConfigDone],[DispenserOptionModeID],[GenAuthEnabled],[PendingPriceBookID],[AllowPresetWithHandleUp],[UseFixedGradeName],[UseFixedServiceLevelName],[UseFixedGradeProductCodes],[TokenAttendantRcptCtl],[TokenAttendantNtwrkRcptCtl],[TokenAttendantPrpayRcptCtl],[RunAttendantInBufferedMode],[AllowAttendantBalanceQuery],[TokenOrStandardOperation],[TokenPrefix],[EnablePostPayLimit],[PostPayLimit],[EMVEnabled])VALUES('Sep 23 2011 3:05:51:000PM',1,1,2,'CM','L',1,1,12,0,9.9990,0.7500,1,1,1,2,1,0,0,0,0,0,0,0,0,0,'',0,100.0000,0)
爲:
SELECT
'Sep 23 2011 3:05:51:000PM' [SiteID],
1 [CurrentOperatingLevelID],
1 [CurrentPriceBookID],
2 [NumberFuelSaleBuffers],
'CM' [LinearUnitOfMeasure],
'L' [VolumeUnitOfMeasure],
1 [PreAuthAllowed],
1 [StackedSalesAllowed],
12 [MaxLiveDispensers],
0 [AllowedZeroPPUs],
9.9990 [MaxPPU],
0.7500 [MinPPU],
1 [InitialConfigDone],
1 [DispenserOptionModeID],
1 [GenAuthEnabled],
2 [PendingPriceBookID],
1 [AllowPresetWithHandleUp],
0 [UseFixedGradeName],
0 [UseFixedServiceLevelName],
0 [UseFixedGradeProductCodes],
0 [TokenAttendantRcptCtl],
0 [TokenAttendantNtwrkRcptCtl],
0 [TokenAttendantPrpayRcptCtl],
0 [RunAttendantInBufferedMode],
0 [AllowAttendantBalanceQuery],
0 [TokenOrStandardOperation],
'' [TokenPrefix],
0 [EnablePostPayLimit],
100.0000 [PostPayLimit],
0 [EMVEnabled]
INTO g_fuel_site
在此之後該表將存在。它只是推斷列的類型,並且只有在第一次select into包含後面插入的所有列時纔會工作。
如果您將第一個(也只是第一個)更改爲SELECT INTO
,那麼可以。假設第一個INSERT
具有正確的可推導數據類型。請注意,它不會神奇地爲您創建鍵,索引,約束,計算列等。
但是,您的示例還包含領先的DELETE
,這使我相信該表已存在。 DELETE
刪除表中的所有行,但不會刪除表。如果該表不存在,那麼腳本應該(a)在運行刪除之前檢查它是否存在,並(b)運行第一個命令a SELECT INTO
以便創建它。然而,你可能想要定義數據類型(我也很難相信SiteID
是DATETIME
)。
IF OBJECT_ID('dbo.g_fuel_site') IS NOT NULL
BEGIN
DELETE g_fuel_site;
END
ELSE
BEGIN
SELECT SiteID = CONVERT(INT, 1), ...
INTO dbo.g_fuel_site
WHERE 1 = 0; -- creates table but with 0 rows
END
INSERT dbo.g_fuel_site(SiteID, ...) VALUES(...); -- first row
INSERT ...
INSERT ...
@Bernie爲什麼不在編輯標籤時修正格式? – 2013-04-22 18:35:11