#sql #teradata
#sql #teradata
Вопрос:
Как мне скопировать данные из нескольких таблиц в одной базе данных в другую базу данных, расположенную на другом сервере?
Возможно ли это с помощью скрипта BTEQ в Teradata?
Если да, предоставьте образец.
Если нет, есть ли другие варианты для этого, кроме использования плоского файла?
Ответ №1:
Это невозможно с использованием BTEQ, поскольку вы упомянули, что обе базы данных находятся на разных серверах.
Для этого есть два решения.
-
Arcmain — Сначала вам нужно использовать Arcmain Backup, который создает файлы, содержащие данные из ваших таблиц. Затем вам нужно использовать Arcmain restore, который восстанавливает данные из файлов
-
TPT — Параллельный транспортер Teradata.Это очень продвинутый инструмент. Это не создает никаких файлов, подобных Arcmain. Он напрямую перемещает данные между двумя серверами teradata.(Википедия)
Комментарии:
1. Только что поймал другой сервер в своем вопросе. Arcmain было бы проще всего. TPT очень похож на NPARC, который перемещал данные с помощью именованных каналов между двумя системами.
2. @Rob Хорошо. Я видел вас в teradataquestions.com Где вы работаете?
3. Прямо сейчас я независимый консультант, работающий ведущим администратором базы данных в хранилище данных Teradata.
4. Доступны ли ArcMain и TPT обычно только пользователям с разрешениями «DBA»?
5. Для ArcMain- archive необходим доступ на чтение к вашим таблицам, а для restore — доступ на запись в новые целевые таблицы. Для TPT — Да, вам нужны расширенные разрешения.
Ответ №2:
Если я правильно понимаю ваш вопрос, вы хотите переместить набор таблиц из одной базы данных в другую.
Вы можете использовать следующий синтаксис в скрипте BTEQ для копирования таблиц и данных:
CREATE TABLE <NewDB>.<NewTable> AS <OldDB>.<OldTable> WITH DATA AND STATS;
Или просто структуры таблиц:
CREATE TABLE <NewDB>.<NewTable> AS <OldDB>.<OldTable> WITH NO DATA AND NO STATS;
Если вы по-настоящему подкованы, вы можете создать скрипт BTEQ, который динамически создает вышеупомянутую инструкцию в инструкции SELECT, экспортирует результаты, а затем, в свою очередь, запускает только что экспортированный файл в рамках одного скрипта BTEQ.
Существует множество других опций, которые вы можете использовать CREATE TABLE <...> AS <...>;
. Для получения более подробной информации вам лучше всего ознакомиться с руководствами Teradata.
Комментарии:
1. Не удалось перехватить два физических экземпляра в исходном вопросе. Мой ответ работает для копирования таблиц в одном и том же физическом экземпляре. Следовательно, не должен быть отмечен как правильный ответ.
Ответ №3:
Есть еще несколько опций, которые позволят вам копировать из одной таблицы в другую.
Возможно, самым простым способом было бы написать небольшую программу, которая использует один из их уровней связи (ODBC, поставщик данных .NET, JDBC, cli и т.д.) И использовать это для выполнения инструкций select и insert. Это потребует некоторой работы, но это будет иметь меньшие накладные расходы, чем пытаться научиться писать сценарии TPT. Вам не понадобятся никакие разрешения администратора базы данных для написания своих собственных.
Teradata также продает другие приложения, что скрывает сложность некоторых инструментов. Обработчики Teradata Data Mover обеспечивают уровень абстракции между такими инструментами, как arcmain и tpt. Доступ к этому инструменту, скорее всего, ограничен типами администраторов баз данных.
Ответ №4:
Если вы хотите переместить данные с одного сервера на другой, мы можем сделать это с помощью плоского файла. Сначала мы извлекаем данные из исходной таблицы в плоский файл с помощью любой утилиты, такой как bteq или fastexport. затем мы можем загрузить эти данные в целевую таблицу с помощью скриптов mload, fastload или bteq.