Intereting Posts
SQL Constraint: дата A до даты B – Как? Подключение к серверу Microsoft SQL с использованием Python Строка PostgreSQL для столбцов MySQL COUNT из нескольких левых объединений – оптометризация Попытка добавить объект геометрии в столбец MySQL, основанный на других столбцах, приводит к тому, что «нет затронутых строк»? Как создать параметризованный запрос в MS Access 2003 и использовать другие запросы / формы для заполнения параметров и получения набора результатов Как выполнить оператор блока в C # для Firebird Преобразование одной строки в несколько строк с меньшим количеством столбцов Можно ли использовать один запрос sql для итерации по иерархической таблице до NULL Вычисление разницы в значении столбца от одной строки до следующей Oracle: разница между NULL и EMPTY-строкой SQLite Query в алфавитном порядке, не чувствительном к регистру Как я могу разрешить пользователям sql-доступ к таблице, ограниченной определенными строками? Как работают представления MySQL? Объединение баз данных, как обрабатывать дубликаты PK

COPY csv с использованием пользовательского пути имени файла

Я получаю некоторые проблемы при попытке экспортировать запрос в CSV, используя функцию COPY.

COPY работает нормально и успешно экспортирует запрос, если не использует пользовательские имена файлов в TO .

Проблема связана с добавлением «datestamp» (kinda) к создаваемому имени файла.

 declare var1 varchar(25); DECLARE STATEMENT TEXT; select into var1 current_date -1; STATEMENT := 'COPY (SELECT * from myTable) To ''E'C:\\Exports\\export_'||var1||'.csv' ''With CSV'; EXECUTE STATEMENT; 

В этом случае var1 получает значение типа 2013-12-16 и мне нужно добавить его к имени файла, чтобы получить export_2012-12-16.csv

Я предполагаю, что ' неуместны». Я пробовал несколько комбинаций без успеха и, конечно, ошибка ERROR: syntax error at or near "C" .

Код plpgsql может работать следующим образом:

 ... DECLARE var1 text; BEGIN var1 := to_char(current_date - 1, 'YYYY-MM-DD'); EXECUTE $$COPY (SELECT * from myTable) TO E'C:\\Exports\\export_$$ || var1 || $$.csv' WITH CSV$$; ... 

Ваши котировки запутались. Использование долларовых котировок для упрощения. Обратите внимание, что подсветка синтаксиса здесь на SO вводит в заблуждение, потому что она не понимает долларовое цитирование.

DECLARE требуется только один раз (но не ошибка). Кроме того, BEGIN отсутствовал.

И to_char() делает текстовое представление даты независимо от локали.