1.4 KiB
1.4 KiB
Title | Date | Slug | Tags |
---|---|---|---|
Extraction de données en CSV avec PSQL | 2015-06-23 | extract-data-as-csv-with-psql | db, sql, psql, csv, extract |
Pour copier des résultats chopés depuis une commande psql
, la syntaxe est relativement simple quand elle est décomposée. En gros, la commande ressemble à ceci:
$ psql -c "\copy (<ma_requête>) to <output_file> DELIMITER E'\t' CSV HEADER;" <db_user> <db_password>
Ce qui signifie plus prosaïquement:
Cher PSQL, copie-moi les résultats de
<ma_requête>
vers le fichier<output_file>
, en utilisant une tabulation pour séparer les champs (tu peux inclure leHEADER
, merci). Pour la connexion, tu peux utiliser<db_user>
et<db_password>
. Bisous.
Le script complet (en .bat
), avec un fichier de sortie timestampé.
@echo off
set output_dir="C:\Extracts"
set db_host=localhost
set db_user=postgres
set db_name=db_name
set db_passwd=db_password
set psql_dir="C:\PSQL\9.2\bin"
for /f "tokens=1-3 delims=/ " %%i in ("%date%") do (
set day=%%i
set month=%%j
set year=%%k
)
for /f "tokens=1-3 delims=: " %%l in ("%time%") do (
set hour=%%l
set min=%%m
)
set datestr=%year%%month%%day%_%hour%_%min%
set output_file=%output_dir%_%datestr%.list.txt
SET PGPASSWORD=%db_passwd%
%psql_dir%\psql -c "\copy (Select SubscriberId, LastName, FirstName From subscriber) to '%output_file%' DELIMITER E'\t' CSV HEADER;" %db_user% %db_passwd%