SQL

Импорт во временные таблицы в Teradata и экспорт результатов запроса

Время прочтения: 5 мин.

Зачастую, в крупных компаниях аудиторам доступ к промышленным базам данных дают с правами «только на чтение». Соответственно, при этом отсутствует возможность создавать, подгружать и выгружать свои промежуточные таблицы. Необходимость в этом может возникнуть в случае, когда, например, вы работаете с разрозненными данными, взятыми из разных источников (с разных серверов БД, расположенных в разных сетях, или из файлов разного типа и происхождения (xlsx, csv, html и т.п.), которые нужно обрабатывать совместно с данными, хранящимися на сервере Teradata.

В этом случае в Teradata на время сеанса работы с сервером можно создать свою временную область с нужными таблицами и импортировать в них данные из текстовых файлов. А кроме этого, также можно сделать обратную операцию — экспорт результатов SQL-запроса в текстовый файл. В отличие от других СУБД, которым необходимы дополнительные внешние инструменты для импорта данных из файлов, и которые не могут делать этот импорт во временные таблицы, Teradata позволяет выполнять все эти действия прямо в текущем сеансе работы, в Teradata SQL Assistant.

Рассмотрим необходимую для этого последовательность действий.

1. В Teradata SQL Assistant подключитесь к БД и активируйте режим импорта данных в пункте меню File – Import Data:

2. В пункте меню Tools – Options установите формат загружаемых текстовых данных:

Здесь указано, что столбцы разделяются табуляцией и данные в них не обрамляются кавычками. При необходимости, вы можете изменить эти настройки в соответствии с содержимым вашего импортируемого файла.

3. Для загрузки создадим демонстрационный файл данных test_table.txt, содержащий строки:

1	Владимир Ленин	1000
2	Иосиф Сталин	950.30
3	Никита Хрущёв	1020.10
999	Михаил Горбачёв	856.66

4. Создадим и выполним новый SQL-запрос:

create volatile table test_table(ID int, name varchar(100), salary float) on commit preserve rows;

В результате во временной области текущего сеанса пользователя будет создана, состоящая из трёх полей ID, NAME и SALARY пустая volatile-таблица TEST_TABLE, которая будет существовать как полноценная таблица во время всей пользовательской сессии.

5. В окне SQL-запроса введите команду

insert into test_table values (?, ?, ?);

Эта команда будет загружать данные в созданную таблицу TEST_TABLE с количеством полей в одной записи, соответствующем количеству вопросительных знаков в скобках. Выполните запрос. После нажатия на кнопку «выполнить» появится диалог выбора файла с данными для импорта:

Выберите файл и дождитесь окончания его импорта.

ВАЖНО! Скорость загрузки файла данным способом не велика и может занять продолжительное время, поэтому он применим к наборам данным не очень большого размера (тысячи, возможно — несколько десятков тысяч строк). Для быстрой загрузки в Teradata есть инструменты FastLoad, OleLoad и MultiLoad, но они, к сожалению, не работают с временными таблицами.

После загрузки в нижнем левом углу окна появится информация о том, сколько записей в таблицу было импортировано:

6. Проверим, правильно ли были импортированы записи из файла. Отключим режим импорта в пункте меню File – Import Data и введём запрос:

select * from test_table;

Как видно, операция импорта прошла успешно. Обратите внимание, что строки выбираются в произвольном порядке, а не так, как они идут в файле.

7. Предположим, что после получения необходимой информации из базы данных возникла необходимость выгрузить её во внешний файл для дальнейшего использования. В Teradata данный процесс удобно реализован с помощью переключения режима вывода полученного набора данных с окна программы во внешний файл.

Для того, чтобы выполнить экспорт, сначала активируйте режим экспорта результатов в пункте меню File – Export Results:

8. Затем снова выполните запрос на выгрузку данных. После нажатия на кнопку «выполнить» появится запрос на экспорт данных в файл. Введите имя файла экспорта и сохраните его:

9. После выполнения запроса данные на экран выведены не будут, но в нижнем левом углу программы появится сообщение о том, сколько записей было успешно экспортировано в файл:

Рассмотренные возможности Teradata SQL Assistant помогут эффективно работать с внешними данными в случаях, когда отсутствуют права на создание и запись объектов на промышленном сервере Teradata.

Советуем почитать