我知道我几年前就这样做过,但我不记得语法了,而且由于调出大量关于“批量导入”的帮助文档和文章,我在任何地方都找不到它。
这是我想做的,但语法不完全正确…拜托,以前做过这件事的人帮帮我吧:)
INSERT INTO dbo.MyTable (ID, Name)
VALUES (123, 'Timmy'),
(124, 'Jonny'),
(125, 'Sally')
我知道这和正确的语法很接近。我可能需要"散装"这个词,我不记得了。任何想法?
我需要这个SQL Server 2005数据库。我试过这段代码,但没有效果:
DECLARE @blah TABLE
(
ID INT NOT NULL PRIMARY KEY,
Name VARCHAR(100) NOT NULL
)
INSERT INTO @blah (ID, Name)
VALUES (123, 'Timmy')
VALUES (124, 'Jonny')
VALUES (125, 'Sally')
SELECT * FROM @blah
我在关键字“值”附近得到不正确的语法。
在PostgreSQL中,你可以这样做;
2列表的通用示例;
INSERT INTO <table_name_here>
(<column_1>, <column_2>)
VALUES
(<column_1_value>, <column_2_value>),
(<column_1_value>, <column_2_value>),
(<column_1_value>, <column_2_value>),
...
(<column_1_value>, <column_2_value>);
在这里查看真实世界的例子;
A -创建表
CREATE TABLE Worker
(
id serial primary key,
code varchar(256) null,
message text null
);
插入批量值
INSERT INTO Worker
(code, message)
VALUES
('a1', 'this is the first message'),
('a2', 'this is the second message'),
('a3', 'this is the third message'),
('a4', 'this is the fourth message'),
('a5', 'this is the fifth message'),
('a6', 'this is the sixth message');
这将达到你想要的效果:
INSERT INTO table1 (ID, Name)
VALUES (123, 'Timmy'),
(124, 'Jonny'),
(125, 'Sally');
对于未来的开发人员,您还可以从另一个表插入:
INSERT INTO table1 (ID, Name)
SELECT
ID,
Name
FROM table2
或者甚至从多个表:
INSERT INTO table1 (column2, column3)
SELECT
t2.column,
t3.column
FROM table2 t2
INNER JOIN table3 t3
ON t2.ID = t3.ID
如果你的数据已经在你的数据库中,你可以这样做:
INSERT INTO MyTable(ID, Name)
SELECT ID, NAME FROM OtherTable
如果你需要硬编码数据,那么SQL 2008和以后的版本让你做以下…
INSERT INTO MyTable (Name, ID)
VALUES ('First',1),
('Second',2),
('Third',3),
('Fourth',4),
('Fifth',5)