Импорт во временные таблицы в Teradata и экспорт результатов запроса
Зачастую, в крупных компаниях проверяющим доступ к промышленным базам данных дают с правами «только на чтение». Соответственно, при этом отсутствует возможность создавать, подгружать и выгружать свои промежуточные таблицы. Необходимость в этом может возникнуть в случае, когда, например, вы работаете с разрозненными данными, взятыми из разных источников (с разных серверов БД, расположенных в разных сетях, или из файлов разного типа и происхождения (xlsx, csv, html и т.п.), которые нужно обрабатывать совместно с данными, хранящимися на сервере Teradata.
В этом случае в Teradata на время сеанса работы с сервером можно создать свою временную область с нужными таблицами и импортировать в них данные из текстовых файлов. А кроме этого, также можно сделать обратную операцию — экспорт результатов SQL-запроса в текстовый файл. В отличие от других СУБД, которым необходимы дополнительные внешние инструменты для импорта данных из файлов, и которые не могут делать этот импорт во временные таблицы, Teradata позволяет выполнять все эти действия прямо в текущем сеансе работы, в Teradata SQL Assistant.
Рассмотрим необходимую для этого последовательность действий.
1. В Teradata SQL Assistant подключитесь к БД и активируйте режим импорта данных в пункте меню File – Import Data:
2. В пункте меню Tools – Options установите формат загружаемых текстовых данных:
Здесь указано, что столбцы разделяются табуляцией и данные в них не обрамляются кавычками. При необходимости, вы можете изменить эти настройки в соответствии с содержимым вашего импортируемого файла.
3. Для загрузки создадим демонстрационный файл данных test_table.txt, содержащий строки:
4. Создадим и выполним новый SQL-запрос:
В результате во временной области текущего сеанса пользователя будет создана, состоящая из трёх полей ID, NAME и salary пустая volatile-таблица TEST_TABLE, которая будет существовать как полноценная таблица во время всей пользовательской сессии.
5. В окне SQL-запроса введите команду
Эта команда будет загружать данные в созданную таблицу TEST_TABLE с количеством полей в одной записи, соответствующем количеству вопросительных знаков в скобках. Выполните запрос. После нажатия на кнопку «выполнить» появится диалог выбора файла с данными для импорта:
Выберите файл и дождитесь окончания его импорта.
После загрузки в нижнем левом углу окна появится информация о том, сколько записей в таблицу было импортировано:
6. Проверим, правильно ли были импортированы записи из файла. Отключим режим импорта в пункте меню File – Import Data и введём запрос:
Как видно, операция импорта прошла успешно. Обратите внимание, что строки выбираются в произвольном порядке, а не так, как они идут в файле.
7. Предположим, что после получения необходимой информации из базы данных возникла необходимость выгрузить её во внешний файл для дальнейшего использования. В Teradata данный процесс удобно реализован с помощью переключения режима вывода полученного набора данных с окна программы во внешний файл.
Для того, чтобы выполнить экспорт, сначала активируйте режим экспорта результатов в пункте меню File – Export Results:
8. Затем снова выполните запрос на выгрузку данных. После нажатия на кнопку «выполнить» появится запрос на экспорт данных в файл. Введите имя файла экспорта и сохраните его:
9. После выполнения запроса данные на экран выведены не будут, но в нижнем левом углу программы появится сообщение о том, сколько записей было успешно экспортировано в файл:
Рассмотренные возможности Teradata SQL Assistant помогут эффективно работать с внешними данными в случаях, когда отсутствуют права на создание и запись объектов на промышленном сервере Teradata.
Комментарий недоступен
А есть ещё другие способы, чтобы импортировать и экспортировать в csv данные из таблиц ? Например, в командной строке или через процедуру ?