2014-05-19 3 views
0

사용자가 테이블 구조를 만들고 데이터를 업로드하는 일반적인 데이터 업로드 응용 프로그램을 만들고 있습니다.한 테이블에서 다른 테이블 구조로 다른 테이블로 데이터 이동

일반 데이터 테이블이 있습니다. 다음과 같은 구조.

-------------------------------------- 
tableId | ColumName | rowNo | CellData 

이제 사용자는 템플릿을 만들고 해당 템플릿의 CSV 형식으로 데이터를 업로드합니다.

사용자가 템플릿을 생성 한 것으로 가정합니다.

---------------------------------------- 
colum1 | colum2 | colum3 | colum4 

나는 다음과 같이 일반 데이터 테이블에 데이터를 이동하려는

TemplateOne 

colum1 | colum2 | colum3 | colum4 
----------------------------------- 
x1  | x2  | x3 | x4 
A1  | A2  | A3 | A4 
B1  | B2  | B3 | B4 

을 다음과 같이 데이터를 삽입합니다.

tableId | ColumName | rowNo | CellData 
-------------------------------------- 
TemplateOne | colum1 | 1 | X1 
TemplateOne | colum1 | 2 | A1 
TemplateOne | colum1 | 3 | B1 
TemplateOne | colum2 | 1 | X2 
TemplateOne | colum2 | 2 | A2 
TemplateOne | colum2 | 3 | B2 
TemplateOne | colum3 | 1 | X3 
TemplateOne | colum3 | 2 | A3 
TemplateOne | colum3 | 3 | B3 
TemplateOne | colum4 | 1 | X4 
TemplateOne | colum4 | 2 | A4 
TemplateOne | colum4 | 3 | B4 

동일한 동적 SQL을 개발하려고합니다. 이 작업을 수행하는 더 쉬운 방법이 있는지 알고 싶을뿐입니다.

예. 그렇다면 제안하십시오. 만약 내가 제대로 이해하고

+0

'TemplateOne'에'rowNo'가 있습니까? 그렇다면 훨씬 쉽습니다. – naota

+0

예 ID 열이 있습니다. 그렇지 않다면 테이블 변수를 사용할 수 있습니다. –

답변

0

, 당신은 일반적으로이 작업을 수행하려면 unpivot

select 'TemplateOne' as tableid, ColumnName, celldata 
from TemplateOne 
unpivot (celldata for ColumnName in (colum1, colum2, colum3, colum4) 
     ) as unpvt; 

을 사용할 수 있습니다, 당신은 동적 SQL을 사용해야합니다.

+0

unpivot을 시도하지만 코드에 내 예를 관련시킬 수 없습니다 (unpivot 지식이 부족할 수 있음). –

0

table1에서 table2까지 데이터를 복사하는 데 INSERT INTO SELECT 문을 사용할 수 있습니다.

INSERT INTO table2 (col1,col2 ...) 
SELECT col1,col2... FROM table1; 

문서

은 여기에 있습니다 :

INSERT INTO generic (tableId, ColumName,rowNo,CellData) 
SELECT 'TemplateOne' AS tableId, 'colum1' AS ColumName, rowNo, colum1 AS CellData 
FROM TemplateOne 
UNION ALL 
SELECT 'TemplateOne' AS tableId, 'colum2' AS ColumName, rowNo, colum2 AS CellData 
FROM TemplateOne 
UNION ALL 
SELECT 'TemplateOne' AS tableId, 'colum3' AS ColumName, rowNo, colum3 AS CellData 
FROM TemplateOne 
UNION ALL 
SELECT 'TemplateOne' AS tableId, 'colum4' AS ColumName, rowNo, colum4 AS CellData 
FROM TemplateOne; 

DEMO :이 도움이 http://sqlfiddle.com/#!2/f3e84a/1

희망
http://www.w3schools.com/sql/sql_insert_into_select.asp


귀하의 SQL은 다음과 같이 갈 수 있습니다.

관련 문제