1つのテーブルに複数の行を挿入したい。単一の挿入ステートメントを使用してこれを行うにはどうすればよいですか?
7 に答える
挿入する値の各行を括弧/括弧(value1, value2, value3)
で囲み、テーブルに挿入する数だけ括弧/括弧をコンマで区切ります。
INSERT INTO example
VALUES
(100, 'Name 1', 'Value 1', 'Other 1'),
(101, 'Name 2', 'Value 2', 'Other 2'),
(102, 'Name 3', 'Value 3', 'Other 3'),
(103, 'Name 4', 'Value 4', 'Other 4');
SQL一括挿入ステートメントを使用できます
BULK INSERT TableName
FROM 'filePath'
WITH
(
FIELDTERMINATOR = '','',
ROWTERMINATOR = ''\n'',
ROWS_PER_BATCH = 10000,
FIRSTROW = 2,
TABLOCK
)
より多くの参照チェックのために
https://www.google.co.in/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=sql%20bulk%20挿入
コードからデータを一括挿入することもできます
そのためには、以下のリンクを確認してください:
http://www.codeproject.com/Articles/439843/Handling-BULK-Data-insert-from-CSV-to-SQL-Server
UNION All
句を使用して、テーブルで複数の挿入を実行できます。
元:
INSERT INTO dbo.MyTable (ID, Name)
SELECT 123, 'Timmy'
UNION ALL
SELECT 124, 'Jonny'
UNION ALL
SELECT 125, 'Sally'
UNION ALL
関数
http://blog.sqlauthority.com/2007/06/08/sql-server-insert-multiple-records-using-one-insert-statement-use-of-union-all/を使用できます
CSV ファイルを最も単純な形式で宛先テーブルにインポートします。サンプルの CSV ファイルを C: ドライブに置いたので、CSV ファイルからデータをインポートするテーブルを作成します。
DROP TABLE IF EXISTS Sales
CREATE TABLE [dbo].[Sales](
[Region] [varchar](50) ,
[Country] [varchar](50) ,
[ItemType] [varchar](50) NULL,
[SalesChannel] [varchar](50) NULL,
[OrderPriority] [varchar](50) NULL,
[OrderDate] datetime,
[OrderID] bigint NULL,
[ShipDate] datetime,
[UnitsSold] float,
[UnitPrice] float,
[UnitCost] float,
[TotalRevenue] float,
[TotalCost] float,
[TotalProfit] float
)
次の BULK INSERT ステートメントは、CSV ファイルを Sales テーブルにインポートします。
BULK INSERT Sales
FROM 'C:\1500000 Sales Records.csv'
WITH (FIRSTROW = 2,
FIELDTERMINATOR = ',',
ROWTERMINATOR='\n' );