これは可能ですか?データベース スキーマのない Insert Into ステートメントでいっぱいの大きな .sql ファイルを取得しました。その場でテーブルを作成できますか?
次に例を示します。
INSERT INTO [g_fuel_site] ([SiteID], ... ,[EMVEnabled])
VALUES('Sep 23 2011 3:05:51:000PM', ... ,0)
編集:テーブルはありません!スクリプトは私がそうすると仮定しました!
これは可能ですか?データベース スキーマのない Insert Into ステートメントでいっぱいの大きな .sql ファイルを取得しました。その場でテーブルを作成できますか?
次に例を示します。
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
、はい。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 ...