Amazon Aurora PostgreSQL ВЫБРАТЬ В OUTFILE S3 - PullRequest
2 голосов
/ 29 октября 2019

Мы пытаемся экспортировать данные из базы данных Amazon Aurora PostgreSQL в сегменты S3. Используемый код выглядит следующим образом:

SELECT  *  FROM analytics.my_test INTO OUTFILE S3
  's3-us-east-2://myurl/sampledata'         
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
MANIFEST ON
OVERWRITE ON; 

Все разрешения были установлены, но мы получаем ошибку

Ошибка SQL [42601]: ОШИБКА: синтаксическая ошибка в или околоПозиция "INTO": 55

Это работает только с базой данных MySQL?

Ответы [ 2 ]

1 голос
/ 29 октября 2019

Я полагаю, что сохранение выходных данных SQL select в S3 ТОЛЬКО работает для БД Amazon Aurora MySQL. Я не вижу ссылок в официальной документации, где упоминается то же самое для Amazon Aurora PostgresSQL.

Ниже приведены фрагменты официальной документации, на которую я ссылался

Интеграция Amazon Aurora MySQL с другими сервисами AWS

Amazon Aurora MySQL интегрируется с другими сервисами AWS, поэтомучто вы можете расширить свой кластер Aurora MySQL для использования дополнительных возможностей в облаке AWS. Ваш кластер Aurora MySQL DB может использовать сервисы AWS для следующих действий:

Синхронно или асинхронно вызывать функцию AWS Lambda с использованием встроенных функций lambda_sync или lambda_async. Для получения дополнительной информации см. Вызов лямбда-функции с помощью собственной функции Aurora MySQL.

Загрузка данных из текстовых или XML-файлов, хранящихся в корзине Amazon Simple Storage Service (Amazon S3), в кластер БД с помощью команды LOAD DATA FROM. Команда S3 или LOAD XML FROM S3. Дополнительную информацию см. В разделе «Загрузка данных в кластер БД Amazon Aurora MySQL из текстовых файлов в корзине Amazon S3».

Сохранение данных в текстовые файлы, хранящиеся в корзине Amazon S3, из кластера БД с помощью SELECT. INTO OUTFILE S3 команда. Дополнительную информацию см. В разделе «Сохранение данных из кластера БД Amazon Aurora MySQL в текстовые файлы в корзине Amazon S3».

Автоматическое добавление или удаление реплик Aurora с автоматическим масштабированием приложения. Дополнительную информацию см. В разделе Использование автоматического масштабирования Amazon Aurora с репликами Aurora.

Интеграция Amazon Aurora PostgreSQL с другими сервисами AWS

Интеграция Amazon Aurora сдругие сервисы AWS, чтобы вы могли расширить кластер Aurora PostgreSQL DB для использования дополнительных возможностей в облаке AWS. Ваш кластер Aurora PostgreSQL DB может использовать сервисы AWS для выполнения следующих задач:

Быстрый сбор, просмотр и оценка производительности ваших экземпляров Aurora PostgreSQL DB с помощью Amazon RDS Performance Insights. Performance Insights расширяет существующие функции мониторинга Amazon RDS, чтобы проиллюстрировать производительность вашей базы данных и помочь вам проанализировать любые проблемы, которые на нее влияют. С помощью панели мониторинга Performance Insights вы можете визуализировать нагрузку на базу данных и фильтровать ее по ожиданиям, операторам SQL, хостам или пользователям.

Дополнительную информацию о Performance Insights см. В разделе Использование Amazon RDS Performance Insights.

Автоматическое добавление или удаление реплик Авроры с автоматическим масштабированием Авроры. Дополнительные сведения см. В разделе «Использование автоматического масштабирования Amazon Aurora с репликами Aurora».

Настройте кластер Aurora PostgreSQL для публикации данных журнала в журналах Amazon CloudWatch. CloudWatch Logs обеспечивают очень надежное хранилище для ваших записей журнала. С помощью CloudWatch Logs вы можете выполнять анализ данных журнала в режиме реального времени и использовать CloudWatch для создания сигналов тревоги и просмотра метрик. Для получения дополнительной информации см. Публикация журналов Aurora PostgreSQL в Amazon CloudWatch Logs.

Нет упоминания о сохранении данных на S3 для PostgresSQL

0 голосов
/ 29 октября 2019

Это отвечает на вопрос о сообщении об ошибке, которое вы получаете.

Синтаксис Postgres отличается от MySQL. В postgres SELECT INTO означает определение новой таблицы из результатов запроса . Это записывает в базу данных, а не в файл.

Вы ищете Postgres COPY синтаксис , поэтому что-то вроде:

COPY
    analytics.my_test                    -- copy the whole table, or use a subquery
    TO 's3-us-east-2://myurl/sampledata'
    DELIMITER ','                        -- it's the default anyway
;
...