回答編集履歴

6

訂正

2016/10/01 17:12

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -58,11 +58,7 @@
58
58
 
59
59
  copy hoge from :inputfile with csv HEADER DELIMITER ',';
60
60
 
61
- header_1,header_2,header_3
62
-
63
- data1,data2,data3
61
+ $(cat hoge.csv)
64
-
65
- ・・・・・
66
62
 
67
63
  \.
68
64
 

5

訂正

2016/10/01 17:12

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
  copyはpostgresサーバへのコマンドSQL文と同じなので、;が必要です。
26
26
 
27
- \copyはpsqlへのコマンドなのでsetと同様に不要です。
27
+ \copyはpsqlクライアントへのコマンドなのでsetと同様に不要です。
28
28
 
29
29
  copyはリモートサーバで実行され入力ファイルは、そのサーバで参照可能な場所になります。
30
30
 

4

追加

2016/10/01 16:58

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -43,3 +43,29 @@
43
43
  psql hogedb -c"\copy hoge from '$inputfile' with csv HEADER DELIMITER ',';"
44
44
 
45
45
  ```
46
+
47
+
48
+
49
+ 要望されているのと違いますがstdinを使った場合
50
+
51
+ ```bash
52
+
53
+ #!/bin/sh
54
+
55
+ psql hogedb<<EOD
56
+
57
+ \set inputfile stdin
58
+
59
+ copy hoge from :inputfile with csv HEADER DELIMITER ',';
60
+
61
+ header_1,header_2,header_3
62
+
63
+ data1,data2,data3
64
+
65
+ ・・・・・
66
+
67
+ \.
68
+
69
+ EOD
70
+
71
+ ```

3

追加

2016/10/01 16:25

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -29,3 +29,17 @@
29
29
  copyはリモートサーバで実行され入力ファイルは、そのサーバで参照可能な場所になります。
30
30
 
31
31
  stdin,stdoutはサーバがクライアントのpsqlに対しての要求になりクライアントの入出力が可能となります。
32
+
33
+
34
+
35
+
36
+
37
+ ```bash
38
+
39
+ #!/bin/sh
40
+
41
+ inputfile=hoge.csv
42
+
43
+ psql hogedb -c"\copy hoge from '$inputfile' with csv HEADER DELIMITER ',';"
44
+
45
+ ```

2

追加

2016/10/01 03:23

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -27,3 +27,5 @@
27
27
  \copyはpsqlへのコマンドなのでsetと同様に不要です。
28
28
 
29
29
  copyはリモートサーバで実行され入力ファイルは、そのサーバで参照可能な場所になります。
30
+
31
+ stdin,stdoutはサーバがクライアントのpsqlに対しての要求になりクライアントの入出力が可能となります。

1

追加

2016/10/01 03:00

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -13,3 +13,17 @@
13
13
  \copyで使えないオプションが使えます。
14
14
 
15
15
  実はstdinとstdoutは\copyコマンドでも同様に可能です。
16
+
17
+
18
+
19
+
20
+
21
+ > ※なぜか「末尾に:がついているのも気になりますが・・・」
22
+
23
+
24
+
25
+ copyはpostgresサーバへのコマンドSQL文と同じなので、;が必要です。
26
+
27
+ \copyはpsqlへのコマンドなのでsetと同様に不要です。
28
+
29
+ copyはリモートサーバで実行され入力ファイルは、そのサーバで参照可能な場所になります。