Я знаю, что это 5 лет после запуска потока, но я хотел бы добавить небольшое изменение к решениям, предложенным до сих пор, на случай, если это поможет кому-то еще (в конечном счете, это то, что я должен был придумать ).
Потенциальная проблема, связанная с вышесказанным, заключается в том, что в случае наивного внедрения в базу данных с сотнями таблиц и тысячами полей разработчик может сначала запросить набор таблиц, а затем внутри цикла запросить все поля каждой таблицы. Это забивает сервер базы данных. Я знаю, что никто специально не предлагал использовать цикл, но никто также не предупреждал об этом. И, честно говоря, это своего рода неявно в том, как структурированы ответы, в том смысле, что они фактически говорят: «первый запрос ко всем таблицам, следующий запрос ко всем полям». В переводе на код этот процесс не может быть ничем иным, как циклом.
Лучший способ (imo) выполнить исходный вопрос - выполнить запрос, подобный:
SELECT table_schema, table_name, column_name
FROM information_schema.columns
WHERE table_schema in ('a', 'b', 'c', 'd')
где a, b, c, d, ... - схемы с таблицами, которые вы хотите сформулировать.
Это предоставляет вам набор данных, который не нормализован, но это не имеет большого значения, так как вы все равно используете его с приложением - тривиально проанализировать результат на уровне приложения так, как вам нужно, и вы ' Мы попали на сервер базы данных только одним сверхлегким запросом, а не сотнями внутри цикла.
В любом случае, надеюсь, что это кому-нибудь поможет!