多个 Select 不同查询输出到 csv 文件
Multiple Select Distinct Queries Outputting to a csv File
我有一个 table,它有大约 200 个属性。对于每个属性,我想知道所有可能的值。大多数属性有 2 到 20 个可能的值。
如果属性可能有太多不同的值(例如邮政编码),那么我只想知道计数。 (请注意,这不需要是一个不同的计数,我更多地将计数步骤作为占位符,因此我维护来自源 table 的属性顺序而不是其他任何东西。)
我想将其保存到 csv 文件中,但如果需要为单个属性保存多个值,则不同的输出文件类型将是 acceptable。
对我要实现的目标的简化查询是:
COPY(
SELECT
(SELECT COUNT(id) FROM complete_file_301115) AS id,
(SELECT DISTINCT (title) FROM complete_file_301115) AS title,
(SELECT COUNT(firstname) FROM complete_file_301115) AS firstname,
(SELECT COUNT(lastname) FROM complete_file_301115) AS lastname,
(SELECT COUNT(address1) FROM complete_file_301115) AS address1,
(SELECT COUNT(address2) FROM complete_file_301115) AS address2,
(SELECT DISTINCT (city) FROM complete_file_301115) AS city,
(SELECT DISTINCT (county) FROM complete_file_301115) AS county,
(SELECT COUNT(postcode) FROM complete_file_301115) AS postcode,
(SELECT DISTINCT (gender) FROM complete_file_301115) AS gender,
(SELECT DISTINCT (job) FROM complete_file_301115) AS job,
(SELECT DISTINCT (children) FROM complete_file_301115) AS children) TO
'/Users/Shared/test123.csv' (FORMAT CSV, DELIMITER ',', HEADER, ENCODING LATIN1);
当我 运行 我的查询时,Postgres 给我错误:
ERROR: more than one row returned by a subquery used as an expression
我知道这个错误基本上是说我不能在 csv 中为单个属性写入多个值。
我的问题是无论如何都要保存一个输出文件,其中包含每个属性所有可能的值,例如
编号:1,2,3,4
title: Mr, Mrs, Miss, Ms, Dr 等
非常感谢
您可以将其转换为文本。适合你吗?
...
(array_to_string( array(SELECT DISTINCT (city) FROM complete_file_301115), ',') ) AS city,
...
我有一个 table,它有大约 200 个属性。对于每个属性,我想知道所有可能的值。大多数属性有 2 到 20 个可能的值。
如果属性可能有太多不同的值(例如邮政编码),那么我只想知道计数。 (请注意,这不需要是一个不同的计数,我更多地将计数步骤作为占位符,因此我维护来自源 table 的属性顺序而不是其他任何东西。)
我想将其保存到 csv 文件中,但如果需要为单个属性保存多个值,则不同的输出文件类型将是 acceptable。
对我要实现的目标的简化查询是:
COPY(
SELECT
(SELECT COUNT(id) FROM complete_file_301115) AS id,
(SELECT DISTINCT (title) FROM complete_file_301115) AS title,
(SELECT COUNT(firstname) FROM complete_file_301115) AS firstname,
(SELECT COUNT(lastname) FROM complete_file_301115) AS lastname,
(SELECT COUNT(address1) FROM complete_file_301115) AS address1,
(SELECT COUNT(address2) FROM complete_file_301115) AS address2,
(SELECT DISTINCT (city) FROM complete_file_301115) AS city,
(SELECT DISTINCT (county) FROM complete_file_301115) AS county,
(SELECT COUNT(postcode) FROM complete_file_301115) AS postcode,
(SELECT DISTINCT (gender) FROM complete_file_301115) AS gender,
(SELECT DISTINCT (job) FROM complete_file_301115) AS job,
(SELECT DISTINCT (children) FROM complete_file_301115) AS children) TO
'/Users/Shared/test123.csv' (FORMAT CSV, DELIMITER ',', HEADER, ENCODING LATIN1);
当我 运行 我的查询时,Postgres 给我错误:
ERROR: more than one row returned by a subquery used as an expression
我知道这个错误基本上是说我不能在 csv 中为单个属性写入多个值。
我的问题是无论如何都要保存一个输出文件,其中包含每个属性所有可能的值,例如
编号:1,2,3,4
title: Mr, Mrs, Miss, Ms, Dr 等
非常感谢
您可以将其转换为文本。适合你吗?
...
(array_to_string( array(SELECT DISTINCT (city) FROM complete_file_301115), ',') ) AS city,
...