Существует много способов добиться этого.
, если вы хотите импортировать все таблицы в БД MySQL, вы можете использовать: import-all-tables - также вы можете использовать этот аргумент --exclude-tables <tables>
- разделенных запятыми значений - исключить некоторую таблицу (ы) с impor-all-tables
если вы хотите импортировать некоторые данные из некоторых таблиц (значимые данные), вы можете использовать: Free-form Query Imports
если вы хотите импортировать несколько таблиц, вы можете прямо сценарий оболочки:
#!/bin/sh
i=0
while [ ${i} -le 5 ]
do
echo "importing table a_0_${i}"
#here write your full sqoop command, this is just an example
#sqoop import --connect --table a_0_${i}
i=$((i + 1))
done
Теперь запустите сценарий оболочки: команда sqoop будет запускаться 6 раз в соответствии с логикой и импортировать 6 таблиц.
$ ./importAll.sh
importing table a_0_0
importing table a_0_1
importing table a_0_2
importing table a_0_3
importing table a_0_4
importing table a_0_5
Примечание: вы должны изменить логику в сценарии оболочки в соответствии с вашими потребностями. Решения, которые я предлагаю, основаны на деталях, о которых идет речь.
привет, спасибо, много изменилось, я думаю, что решение 2 подходит, потому что у меня есть 20W + таблиц, распространяемых на сотнях машин, и я должен учитывать количество подключений каждой базы данных. Я намерен использовать union all для объединения нескольких таблиц, знаете ли вы, как их реализовать? – Jiangbo
Что вы понимаете под таблицами '20W +'? Я думаю, что для использования 'UNION' вам нужно будет учитывать требование от типа mysql, типа столбца, и число столбцов в каждом предложении UNION должно совпадать. также считают, что 'UNION' будет экспортировать только уникальные данные, вы можете использовать' UNION ALL'. Кроме того, опция 2 будет экспортировать все таблицы в один файл 'hdfs' –