몇 년 전에이 작업을 수행 한 것을 알고 있지만 구문을 기억할 수 없으며 “bulk imports”에 대한 많은 도움말 문서와 기사를 가져 와서 어디에서나 구문을 찾을 수 없습니다.
여기에 내가하고 싶은 일이 있지만 구문이 정확하지 않습니다 … 제발, 전에 이것을 한 사람이 나를 도와주세요 🙂
INSERT INTO dbo.MyTable (ID, Name)
VALUES (123, 'Timmy'),
(124, 'Jonny'),
(125, 'Sally')
나는 이것이 올바른 구문에 가깝다 는 것을 알고 있습니다. 거기에 “BULK”라는 단어가 필요할 수도 있습니다. 어떤 생각?
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
나는 점점 Incorrect syntax near the keyword 'VALUES'.
답변
INSERT INTO dbo.MyTable (ID, Name)
SELECT 123, 'Timmy'
UNION ALL
SELECT 124, 'Jonny'
UNION ALL
SELECT 125, 'Sally'
SQL 서버 2008, 하나의 VALUES 절에서 그것을 할 수 정확히 질문의 문에 따라 (당신은 각각의 값 문을 구분하는 쉼표를 추가해야합니다) …
답변
구문은 SQL Server 2008에서 거의 작동하지만 SQL Server 2005 1 에서는 작동하지 않습니다 .
CREATE TABLE MyTable (id int, name char(10));
INSERT INTO MyTable (id, name) VALUES (1, 'Bob'), (2, 'Peter'), (3, 'Joe');
SELECT * FROM MyTable;
id | name
---+---------
1 | Bob
2 | Peter
3 | Joe
1 질문에 대한 답변을 받았을 때 해당 질문이 SQL Server 2005에 관한 것임을 분명히 알 수 없었습니다. 나는 여전히 관련이 있다고 생각하기 때문에이 답변을 여기에 남겨두고 있습니다.
답변
데이터가 이미 데이터베이스에있는 경우 다음을 수행 할 수 있습니다.
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)
답변
Daniel Vassallo의 답변 INSERT INTO ... VALUES
과 같은 구문을 사용하면 성가신 한계가 있습니다.
에서 MSDN
값 목록에 직접 행을 삽입하여 구성 할 수있는 최대 행 수는 1000입니다.
이 제한을 생략하는 가장 쉬운 방법은 다음과 같은 파생 테이블을 사용하는 것입니다.
INSERT INTO dbo.Mytable(ID, Name)
SELECT ID, Name
FROM (
VALUES (1, 'a'),
(2, 'b'),
--...
-- more than 1000 rows
)sub (ID, Name);
이것은 SQL Server 2008 이상부터 작동합니다
답변
이 작업을 수행 할 수 있습니다 (추악하지만 작동합니다).
INSERT INTO dbo.MyTable (ID, Name)
select * from
(
select 123, 'Timmy'
union all
select 124, 'Jonny'
union all
select 125, 'Sally'
...
) x
답변
이것은 당신이 요구하는 것을 달성 할 것입니다 :
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 dbo.MyTable (ID, Name)
SELECT ID, Name FROM (
SELECT 123, 'Timmy'
UNION ALL
SELECT 124, 'Jonny'
UNION ALL
SELECT 125, 'Sally'
) AS X (ID, Name)
