Использование psql (Postgres 12.3.1), запущенного на Windows Server 2019. На этом сервере 64 ГБ ОЗУ, и я пытаюсь выполнить следующий запрос в базе данных Amazon Redshift:
psql -h amazon-redshift-database.redshift.amazonaws.com -d DATABASE -U USER -p 5439 -a -c "select * from realy.large_table" -F ',' -o "D:\Program Files\PostgreSQL\12\data\amazon_redshift_download\really.large_table.csv"
Выдает ошибку: «недостаточно памяти» в середине запроса. Таблица содержит 458 968 689 строк с 5 столбцами: varchar (50), varchar (50), varchar (50), integer, timestamp.
MS SQL, кажется, имеет следующие возможности:
"select top 50 percent * from really.large_table ..."
Есть ли у PostgreSQL что-нибудь подобное? Если нет, есть ли способ разбить мои запросы на проценты, чтобы я мог уменьшить размер / потребление памяти для моего запроса? Я пробовал настроить производительность и безуспешно использовать серверы с большим объемом памяти.
Версия:
psql -h amazon-redshift-database.redshift.amazonaws.com -d DATABASE-U USER -p 5439 -a -c "select version();"
version
---------------------------------------------------------------------------------------------------------------------------
PostgreSQL 8.0.2 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.4.2 20041017 (Red Hat 3.4.2-6.fc3), Redshift 1.0.16966
(1 row)
Пробовал:
select * from really.large_table tablesample (50)
select * from really.large_table tablesample(50)
select * from really.large_table tablesample (50);
select * from really.large_table tablesample(50);
tablesample system (50)
tablesample system(50)
tablesample system (50);
tablesample system(50);
select * from tablesample system (50); <-with above combinations
Результат:
ERROR: syntax error at or near "50"
LINE 1: select * from really.large_table tablesample(50)
введите описание изображения здесь