Я создаю общее приложение для загрузки данных, где пользователь создает структуру таблицы и загружает данные.
У меня есть общая таблица данных. со следующей структурой.
--------------------------------------
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 для того же самого. Просто хочу знать, есть ли более простой способ сделать это.
Если да, пожалуйста, предложите.
Я думаю, вы можете использовать INSERT INTO SELECT
для копирования данных из table1
в table2
.
INSERT INTO table2 (col1,col2 ...)
SELECT col1,col2... FROM table1;
Документ находится здесь:
http://www.w3schools.com/sql/sql_insert_into_select.asp
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;
ДЕМО: http://sqlfiddle.com/#!2/f3e84a/1
Надеюсь это поможет.