3

我正在使用 VSQL 使用以下命令从 CSV 格式的表中提取数据:

vsql -h [host_address] -d [db_name] -u [user_name] -w [password] -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 经验的人都可以帮助我,我将非常感谢您的帮助。谢谢!

4

2 回答 2

2

没有-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
于 2018-07-27T18:37:00.950 回答
1

没有记录的方法可以做到这一点。

您可以在脚本中注入一个选择,但打印出标题,同时只保留元组。

\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在两个查询中引用(只需将'其用于标题列表)。在这种情况下,标头列表只需要是一个字符串,而分隔符必须是 a,,因为它也将在 sql 中使用。只是一个想法。

于 2016-12-05T04:26:03.447 回答