Быстрый старт
Развертывание
Моделирование данных
Подключение
Запись данных
Миграция
Запросы
Операции и обслуживание
Типовое обслуживание
Секционирование
Резервное копирование и восстановление
Масштабирование
Зеркалирование
Управление ресурсами
Безопасность
Мониторинг
Настройка производительности
Устранение неполадок
Справочник
Руководство по инструментам
Типы данных
Хранилище данных
Выполняющая система
Потоковая передача
Восстановление после сбоев
Конфигурация
Индексы
Расширения
Справочник по SQL
Часто задаваемые вопросы
Ввод файлов — это процесс импорта существующих текстовых файлов с данными в целевую таблицу. Как правило, текстовые файлы имеют формат CSV.
Создайте CSV-файл:
$ vi rows.csv
Тестовый CSV-файл имеет следующий формат. Первая строка содержит названия столбцов, а последующие строки — данные. Три столбца имеют типы timestamp, integer и string соответственно:
time,c1,c2
2021-01-01 00:00:00,1,a1
2021-01-01 00:00:00,2,a2
2021-01-01 00:00:00,3,a3
Целевая база данных — test, а схема целевой таблицы dest соответствует формату CSV-файла:
=# CREATE TABLE dest(
time timestamp,
c1 int,
c2 text
)USING MARS3
DISTRIBUTED BY(c1)
ORDER BY(time,c1);
Ниже приведены несколько распространённых способов импорта содержимого файла в целевую таблицу:
Команда COPY — это встроенная SQL-команда в YMatrix, предназначенная для импорта файлов данных, расположенных на узле Master (мастер-узле), в целевую таблицу.
Сначала подключитесь к целевой базе данных с помощью psql, затем выполните команду COPY:
[mxadmin@mdw ~]$ psql test
psql (12)
Type "help" for help.
test=# COPY dest FROM '/home/mxadmin/rows.csv' DELIMITER ',' HEADER;
COPY 3
Параметр DELIMITER задаёт разделитель полей. Опция HEADER указывает, что строка заголовка должна быть пропущена при импорте.
Метод COPY прост в использовании, однако имеет следующие ограничения:
MatrixGate использует высокоскоростной инструмент ввода данных YMatrix — mxgate — для импорта данных.
По сравнению с COPY, mxgate обеспечивает лучшую производительность при работе с большими объёмами данных и позволяет размещать файлы данных независимо от мастер-узла.
$ tail -n +2 rows.csv | mxgate --source stdin --db-database test --db-master-host localhost --db-master-port 5432 --db-user mxadmin --time-format raw --target public.dest --parallel 2 --delimiter ','
Приведённая выше команда использует конвейер (pipe), чтобы перенаправить данные из rows.csv (начиная со второй строки) в mxgate. Утилита mxgate вводит данные из стандартного потока ввода (stdin) в таблицу dest базы данных test.
Примечание!
Поскольку при вводе данных с помощьюmxgateзаголовок файла не требуется, командаtail -n +2используется для вывода содержимого файла, начиная со второй строки.
Дополнительную информацию об mxgate см. в документации.