質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

Q&A

解決済

2回答

4548閲覧

psqlを使ってSQL結果をcsvファイルに出力したい

iguchi0928

総合スコア7

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

0グッド

0クリップ

投稿2016/05/23 11:13

編集2016/05/23 11:40

掲題の通り、CSV出力したいのですが、
fe_sendauth no password supplied
上記エラーが発生しDBにアクセスできません。
(pgpass.confは設定済みです。)

どこが悪いのか見当がつきかねて困っております。
なにかご指摘などありましたらご教授ください。

###該当のソースコード
set C_MEC_DRIVE=C:
set C_MEC_FOLDER_NAME=AP
set C_MEC_ROOT_DIR=%C_MEC_DRIVE%%C_MEC_FOLDER_NAME%

rem DB接続時の接続先ホスト情報
set C_CONN_HOST=HOST
set C_CONN_PORT=PORT
set C_CONN_INFO=-h %C_CONN_HOST% -p %C_CONN_PORT% -U %C_MEC_USER% -d %C_MEC_DB_NAME% -q -t --no-password

rem スーパーユーザ
set C_SUSER=postgres

set C_MEC_DB_NAME=DBNAME
set C_MEC_USER=USER

rem CSVファイル出力フォルダパス
set C_BATCHLOG_DIR=%~dp0\CSV

rem CSV出力フォルダ作成
if not exist "%C_BATCHLOG_DIR%" (
mkdir %C_BATCHLOG_DIR%
)

rem 遅延環境変数にて対応
setlocal ENABLEDELAYEDEXPANSION

rem SQLファイル数分ループ
for %%i in (SQL*.sql) do (
set C_BATCHLOG_FILE=%%i
set C_BATCHLOG_FILE=!C_BATCHLOG_FILE:~4,-4!

(psql %C_CONN_INFO% -f %~dp0\%%i -A -F, >> %C_BATCHLOG_DIR%\!C_BATCHLOG_FILE!_%date:~-10,4%%date:~-5,2%%date:~-2,2%.csv)

)

endlocal

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/05/23 11:32

質問用テンプレートに適切に情報を当てはめて質問内容を完成していただきたいです。不要な箇所は省いても良いと思います。
iguchi0928

2016/05/23 12:07

不完全な状態で投稿してしまい申し訳ないです。 更新いたしましたので、もう一度ご覧いただけたら幸いです。
guest

回答2

0

ベストアンサー

環境設定をもう一度確認してみてください。
PostgreSQLが使う環境変数が足りていない可能性があります。

Windowsでのパスワードファイルの置き場所は%APPDATA%\postgresql\pgpass.confとなっていますが、
その箇所に適切にファイルが置かれていて、書式も正しいかどうかを検証してください。

参考:31.15. パスワードファイル
http://www.postgresql.jp/document/9.5/html/libpq-pgpass.html

下記、以前の回答:
psql上などでクエリー結果をCSV出力するのに、SQL文としてのCOPY文か、
psql内メタコマンドの\copyコマンドがあります。

COPY select文などのクエリー TO '出力先ファイル名' FORMAT CSV FORCE_QUOTE * ENCODING UTF8
みたいな感じでしょうか?

参考:COPY
http://www.postgresql.jp/document/9.5/html/sql-copy.html

投稿2016/05/23 11:37

編集2016/05/24 00:19
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

パスワードを省略しない形で、コマンドを作成しなおしました。
ご回答感謝します。
今後ともよろしくお願いします。

投稿2016/05/24 02:47

iguchi0928

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問