нет, не напрямую. данные загрузки могут быть вставлены только в одну таблицу или секционированную таблицу.
Что вы можете сделать, это загрузить данные в промежуточную таблицу, а затем использовать insert into
, чтобы выбрать отдельные столбцы в 2 финальных таблицах. вам также может понадобиться substring_index
, если вы используете разные разделители для значений tbl2. номер строки обрабатывается автоматически увеличивающимся столбцом в промежуточной таблице (самый простой способ - сделать автоматический столбец последним в определении промежуточной таблицы).
формат не совсем понятен, и лучше всего это делать с perl / php / python, но если вы действительно хотите использовать инструменты оболочки:
cut -d , -f 1-5 file | awk -F, '{print NR "," $0}' > table1
cut -d , -f 6- file | sed 's,\:,\,,g' | \
awk -F, '{i=1; while (i<=NF) {print NR "," $(i) "," $(i+1); i+=2;}}' > table2
при этом создаются файлы таблиц 1 и 2 со следующим содержимым:
1,tbl1.col1,tbl1.col2,tbl1.col3,tbl1.col4,tbl1.col5
2,tbl1.col1,tbl1.col2,tbl1.col3,tbl1.col4,tbl1.col5
3,tbl1.col1,tbl1.col2,tbl1.col3,tbl1.col4,tbl1.col5
и
1,tbl2.col1,tbl2.col2
1,tbl2.col1,tbl2.col2
2,tbl2.col1,tbl2.col2
2,tbl2.col1,tbl2.col2
3,tbl2.col1,tbl2.col2
3,tbl2.col1,tbl2.col2