52

我想在一个表中插入多行。如何使用单个插入语句来做到这一点?

4

7 回答 7

101

将要插入的每一行值包装在括号/括号中(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');
于 2012-09-11T08:50:23.653 回答
20

您可以使用 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%20insert

您也可以从代码中批量插入数据

请查看以下链接:

http://www.codeproject.com/Articles/439843/Handling-BULK-Data-insert-from-CSV-to-SQL-Server

于 2016-10-18T07:14:41.897 回答
15
1--> {Simple Insertion when table column sequence is known}
    Insert into Table1
    values(1,2,...)

2--> {Simple insertion mention column}  
    Insert into Table1(col2,col4)
    values(1,2)

3--> {bulk insertion when num of selected collumns of a table(#table2) are equal to Insertion table(Table1) }   
    Insert into Table1 {Column sequence}
    Select * -- column sequence should be same.
       from #table2

4--> {bulk insertion when you want to insert only into desired column of a table(table1)}
    Insert into Table1 (Column1,Column2 ....Desired Column from Table1)  
    Select Column1,Column2..desired column from #table2
于 2014-05-15T12:13:26.997 回答
7

您可以使用UNION All子句在表中执行多次插入。

前任:

INSERT INTO dbo.MyTable (ID, Name)
SELECT 123, 'Timmy'
UNION ALL
SELECT 124, 'Jonny'
UNION ALL
SELECT 125, 'Sally'

在这里检查

于 2012-09-11T08:51:57.913 回答
6

对于 MSSQL,有两种方法:(假设您有一个“用户”表,以下两个示例都使用此表)

1)如果您需要在用户表中插入不同的值。然后您可以编写如下语句:

    INSERT INTO USERS VALUES
(2, 'Michael', 'Blythe'),
(3, 'Linda', 'Mitchell'),
(4, 'Jillian', 'Carson'),
(5, 'Garrett', 'Vargas');

2)另一种情况,如果您需要为所有行插入相同的值(例如,您需要在此处插入10行)。然后你可以使用下面的示例语句:

    INSERT INTO USERS VALUES
(2, 'Michael', 'Blythe')
GO 10

希望这可以帮助。

于 2019-04-14T10:02:55.073 回答
3

您可以使用UNION ALL功能 http://blog.sqlauthority.com/2007/06/08/sql-server-insert-multiple-records-using-one-insert-statement-use-of-union-all/

于 2012-09-11T08:51:10.387 回答
-1

我们将以最简单的形式将 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' );
于 2020-03-07T13:54:49.893 回答