私はPostgreSQLを初めて使用していますが、ヘッダ付きのテーブル全体を.csvにエクスポートする方法に関するチュートリアルがあります。フィールド名のみをエクスポートしたいと思います。Postgresテーブルの列名のみをCSVにエクスポート
テーブルx
の列名のみを.csvにエクスポートするクエリを作成するにはどうすればよいですか。
私はPostgreSQLを初めて使用していますが、ヘッダ付きのテーブル全体を.csvにエクスポートする方法に関するチュートリアルがあります。フィールド名のみをエクスポートしたいと思います。Postgresテーブルの列名のみをCSVにエクスポート
テーブルx
の列名のみを.csvにエクスポートするクエリを作成するにはどうすればよいですか。
COPY (select * from table_name where false) -- To return result without rows
TO 'D:\File.csv' DELIMITER ',' CSV HEADER;
または
create temp table tmp (like table_name); -- To copy structure into a new temp table
COPY tmp TO 'D:/File.csv' DELIMITER ',' CSV HEADER;
drop table tmp;
のおかげではありませんが、私は名前の列を持っていない 'product_id' ... –
ああ、私はproduct_id'は、その情報の一意のキー –
あなたはpsql
コンソールからあなたが\d
コマンドを使用して、テーブル構造に関するいくつかの有用な情報を尋ねることができることを知っている必要があります。
もちろん、必要なのは、アプリケーションからSQLクエリを実行してその情報を取得することです。
しかし、あなたは-E
(または
--echo-hidden
)と
psql
を呼び出す場合は、その後、
\d some table
(または任意の他のコンソールコマンド)を入力した後に、それはまた、出力クエリ(またはクエリ)は、その情報を取得するために使用されます。そのような場合には非常に便利です。例えば
:
SELECT a.attname
FROM pg_catalog.pg_attribute a
WHERE a.attrelid = (
SELECT c.oid
FROM pg_catalog.pg_class c
WHERE c.relname ~ '^(foo)$'
)
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum;
実際には、あなたも
WHERE c.relname ~ '^(foo)$'
を変更することができます:最初の1と第三のクエリを組み合わせるtest=> \d foo ********* QUERY ********** SELECT c.oid, n.nspname, c.relname FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relname ~ '^(foo)$' AND pg_catalog.pg_table_is_visible(c.oid) ORDER BY 2, 3; ************************** ********* QUERY ********** SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, c.relhastriggers, c.relhasoids, '', c.reltablespace, CASE WHEN c.reloftype = 0 THEN '' ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END, c.relp ersistence, c.relreplident FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid) WHERE c.oid = '41967'; ************************** ********* QUERY ********** SELECT a.attname, pg_catalog.format_type(a.atttypid, a.atttypmod), (SELECT substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid) for 128) FROM pg_catalog.pg_attrdef d WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef), a.attnotnull, a.attnum, (SELECT c.collname FROM pg_catalog.pg_collation c, pg_catalog.pg_type t WHERE c.oid = a.attcollation AND t.oid = a.atttypid AND a.attcollation <> t.typcollation) AS attcollation, NULL AS indexdef, NULL AS attfdwoptions FROM pg_catalog.pg_attribute a WHERE a.attrelid = '41967' AND a.attnum > 0 AND NOT a.attisdropped ORDER BY a.attnum; ************************** [...more...]
今は、何をしたいだけで構築することは容易です
WHERE c.relname = 'foo'
もあります。テーブル名を正規表現で照合できるようにしたい場合を除きます。私はあなたの場合ではないと思います。
おかげで'、参照してください! –
これは重複 –