teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

追記の追記

2016/10/03 08:25

投稿

hpptms
hpptms

スコア54

title CHANGED
File without changes
body CHANGED
@@ -60,4 +60,14 @@
60
60
  ```
61
61
 
62
62
  おそらくスクリプトの方を工夫することで問題の解決は図れそうですが、外部SQLの中が結構複雑で時間を考えて直打ちになりました。
63
- せっかくアドバイス頂いたのに解決できずに申し訳ないです。
63
+ せっかくアドバイス頂いたのに解決できずに申し訳ないです。
64
+
65
+ 結果2
66
+ 何度も申し訳ありません。
67
+ \copyコマンド自体をinputするという方法を上司に指南して頂きました。
68
+ スラッシュを2重にしないとダメなようでした。
69
+ ニッチすぎる情報ですが、誰かのお役に立てば。
70
+ ```外部SQL
71
+ \set copycmd '\copy hoge from ':inputfile' (format csv, header true);'
72
+ :copycmd
73
+ ```

2

アドバイスを頂いての結果・・・

2016/10/03 08:25

投稿

hpptms
hpptms

スコア54

title CHANGED
File without changes
body CHANGED
@@ -28,4 +28,36 @@
28
28
  構成としては、「.sh」でCSV手前までのパスを定義して、そのファイル内でpsqlに接続し、一緒に実行する外部SQLファイル、変数を渡しています。
29
29
 
30
30
  おそらく何通りも答えがありそうな予感がしております^^:
31
- ベストアンサーはまだですが、先にみなさまアドバイスありがとうございました。
31
+ ベストアンサーはまだですが、先にみなさまアドバイスありがとうございました。
32
+
33
+ 結果:
34
+ いくつかの方法を提示して頂けましたが、ファイルパス直打ちにしました。
35
+ アドバイス頂けたのに申し訳ないです。
36
+ 中には私の理解不足で上手く試せてない方法もあります。
37
+
38
+ その他自分で試した方法として、一時テーブルを作成してサブクエリでfromを指定したりしてみましたが、ダメでした。
39
+
40
+ ベストアンサーを選んでからなので少し遅いですが、詳細な方法としては、下記の通りです。
41
+ ```bash
42
+ #!/bin/bash
43
+
44
+ dbuser="hoge"
45
+ dbconection=`cat ./db_conection`
46
+ dbname=`cat ./db_name`
47
+ dbpassword=`cat db_password`
48
+ path=`pwd`"/import/"
49
+ datpath=$path"data/"
50
+
51
+ psql -h $dbconection -U $dbuser -d $dbname -f $path'sql/import.sql' -v datpath=$datpath
52
+ ```
53
+
54
+ ```外部SQLファイル
55
+ \set filename hoge.csv
56
+ \set inputfile '''':datpath:filename''''
57
+
58
+ \copy hoge from :inputfile with csv HEADER DELIMITER ',';
59
+ -- 上記の:inputfileがどうしても展開されず・・・
60
+ ```
61
+
62
+ おそらくスクリプトの方を工夫することで問題の解決は図れそうですが、外部SQLの中が結構複雑で時間を考えて直打ちになりました。
63
+ せっかくアドバイス頂いたのに解決できずに申し訳ないです。

1

お礼と補足、ベストアンサーがすぐに選べない理由など

2016/10/03 07:52

投稿

hpptms
hpptms

スコア54

title CHANGED
File without changes
body CHANGED
@@ -19,4 +19,13 @@
19
19
  ・「/echo :inputfile」で出力されたパスは表示され catなどで確認しても中身はある。
20
20
 
21
21
  もう少しで正常に動作させられそうなのですが、どうしてもfrom の部分の書き方が分からず質問致しました。
22
- どなたか答え、もしくはヒントでも良いのでお助け下さい。
22
+ どなたか答え、もしくはヒントでも良いのでお助け下さい。
23
+
24
+ お礼と補足:
25
+ 大変申し訳ございませんが、手元に実行環境が無いため検証できしだい、ベストアンサーを選択致します。
26
+ また、質問内容が分かりにくく申し訳ありません。
27
+
28
+ 構成としては、「.sh」でCSV手前までのパスを定義して、そのファイル内でpsqlに接続し、一緒に実行する外部SQLファイル、変数を渡しています。
29
+
30
+ おそらく何通りも答えがありそうな予感がしております^^:
31
+ ベストアンサーはまだですが、先にみなさまアドバイスありがとうございました。