Как исключить всю информацию о строке из вывода VSQL

Я использую VSQL для извлечения данных из таблицы в формате CSV с помощью этой команды:

vsql -h [адрес_хоста] -d [имя_базы_данных] -u [имя_пользователя] -w [пароль] -A -F, -t -f script_to_extract_data.sql -o output.csv

Однако он выводит заголовки столбцов, строки данных и дополнительную строку, которая указывает общее количество строк в таблице, например:

Geography,Product,Campaign,VariableName,Outlet,Creative,Period,VariableValue
Geo_00000,Product,BABY,web_sales,Total,Total,2016-10-03,24.06
Geo_00000,Product,BABY,web_sales,Total,Total,2016-10-08,67.17
Geo_00000,Product,BABY,web_sales,Total,Total,2016-10-17,404.67
(3 rows)

Если я исключу -t вариант, он будет выводить только данные, как это:

Geo_00000,Product,BABY,web_sales,Total,Total,2016-10-03,24.06
Geo_00000,Product,BABY,web_sales,Total,Total,2016-10-08,67.17
Geo_00000,Product,BABY,web_sales,Total,Total,2016-10-17,404.67

Я хотел бы заголовки столбцов И данные, но не общее количество строк, как это:

Geography,Product,Campaign,VariableName,Outlet,Creative,Period,VariableValue
Geo_00000,Product,BABY,web_sales,Total,Total,2016-10-03,24.06
Geo_00000,Product,BABY,web_sales,Total,Total,2016-10-08,67.17
Geo_00000,Product,BABY,web_sales,Total,Total,2016-10-17,404.67

Прочитав параметры командной строки VSQL, я не думаю, что у меня есть способ ограничить общее количество не отображаемых строк?? Любой, кто имеет опыт использования VSQL через командную строку, может мне помочь, я был бы очень признателен за помощь. Спасибо!

2 ответа

Решение

Нет задокументированного способа сделать это.

Вы можете просто вставить выбор в ваш скрипт, хотя бы распечатать заголовок, оставив только кортежи включенными.

\t
\a
\f ,
\o output.csv
select 'Geography', 'Product', 'Campaign', 'VariableName', 'Outlet', 'Creative', 'Period', 'VariableValue';

select Geography, Product, Campaign, VariableName, Outlet, Creative, Period, VariableValue
from mytable;
\o

И я полагаю, что если вас действительно действительно беспокоит перечисление полей дважды, вы можете использовать переменную.

\set fields Geography,Product,Campaign,VariableName,Outlet,Creative,Period,VariableValue

Тогда ссылка :fields в обоих запросах (просто используйте ' вокруг него для списка заголовков). В этом случае список заголовков просто должен быть строкой, а разделитель должен быть , так как это также будет использоваться в sql. Просто мысль.

Без -t добавлять -P footer=off... это даст вам заголовки без нижнего колонтитула, как вы хотите.

vsql -h [host_address] -p [port] -d [db_name] -u [user_name] -w [password] -AP footer=off -F , -f script_to_extract_data.sql -o output.csv
Другие вопросы по тегам