이 문제와 관련된 다른 질문을 게시했지만 XLS에서 여러 행 데이터 가져 오기 문제를 직접 해결할 수있는 응답이 없습니다. 나는 드문 SQL 또는 DB 사용자입니다. 따라서 이러한 쿼리를 작성하는 것과 관련된 내 배경/경험이 제한적입니다. 내 목표를 달성하기위한보다 쉽고 직접적인 접근 방식이 있다면, 나는 분명히 그들에게 열려 있습니다. 나는 지나치게 넓히거나 다른 것을 의미하지는 않지만,이 사이트는 가장 도움이 될 것 같습니다. (다른 게시물에 답한 모든 분들께 감사드립니다.)여러 행 증가 XLS 일괄 처리에서 insetion에 대한 트리거가있는 FK ID SQL
일부 게시물에서 보았습니다. 작업 집합 기반 쿼리/트리거 (여러 행을 가져 오므로)가 있다는 것을 이해합니다. 궁극적으로 데이터를 상위 테이블로 가져올 필요가 있습니다. 하위 테이블은 부모 테이블의 고정 값 및 값으로 채울 수 있지만 PK/FK 관계는 유지 관리해야합니다. 그리고 이것이 내가 XLS에서 1 행 이상의 데이터를 가져올 때 가장 문제가되는 것 같습니다.
상위 테이블에서 삽입이 실행될 때 하위 테이블에 값을 삽입하는 트리거를 설정했습니다. 그러나 쿼리가 올바르게 실행되지만 여러 행의 데이터가 삽입 될 때 PK와 일치하는 FK를 가질 수 없습니다. FK는 항상 부모 테이블에 삽입 된 마지막 행의 ID를가집니다. 다른 포럼 게시물 (여기 및 다른 사이트)에서 여러 가지 방법을 시도했지만 항상 오류가 발생합니다.
이INSERT INTO [prototype].[dbo].[PageVersion] ([Number], [PageId], [Properties], [StateId], [Language], [SearchText], [PageMetaDescription], [PageMetaKeyWords], [PageTypeId], [Name], [Title], [Owner], [Admin], [ShowInMenu])
SELECT [Number], [PageId], [Properties], [StateId], [Language], [SearchText], [PageMetaDescription], [PageMetaKeyWords], [PageTypeId], [Name], [Title], [Owner], [Admin], [ShowInMenu]
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\test_import.xls', 'SELECT * FROM [Query$]');
나는 것이 유일한 다른 아이디어는 어떤 종류의를 만들 수 : 부모 테이블에 삽입하는 데 사용
ALTER TRIGGER [updatePgVer]
ON [prototype].[dbo].[PageVersion]
FOR INSERT AS
BEGIN
SET NOCOUNT ON;
-- Insert into PageHistory
INSERT
INTO [prototype].[dbo].[PageHistory] ([VersionID], [Date], [Action], [Who], [StateId], [Owner])
SELECT
@@IDENTITY
, GETDATE()
, 'created'
, 'xls_user'
, [StateID]
, 'xls_user'
FROM inserted
END
그리고 쿼리 : 여기
내 updatePgVer 트리거 코드 루프는 각 행을 통과하여 한 번에 하나씩 가져 오기 때문에 @@ IDENTITY는 항상 일치합니다. 그러나 내가 본 예제는 수입에 적용하기가 어려워 보입니다.
당신에게 가볍게 침 감사합니다! 그런 간단한 해결책. 부모 테이블에서 올바른 ID 열 이름을 사용해야했지만 그렇지 않은 경우 즉시 처리되었습니다. 너무 오랫동안 그것을 쳐다 보면서 나는'StateID'와 똑같은 것을 잊었습니다. 나는 이것을 곧 투표 할 수 있기를 바란다. – Alex