質問編集履歴

2

追記

2021/11/03 03:08

投稿

L.J
L.J

スコア2

test CHANGED
File without changes
test CHANGED
@@ -105,3 +105,71 @@
105
105
 
106
106
 
107
107
  PostgreSQL 12.4
108
+
109
+
110
+
111
+
112
+
113
+ ### 2021/11/03 追記
114
+
115
+ あれから色々とご指摘をいただきながら自分で試してみまして、
116
+
117
+ [posgresql \copyのfromに変数(csvのパス)を使いたい](https://teratail.com/questions/49888)
118
+
119
+ 上記を参考に、COPYコマンド自体を変数にセットしてみました。
120
+
121
+
122
+
123
+ ■TEST.sql
124
+
125
+ ```SQL
126
+
127
+ \set filepass :CSVDIR'\TEST.CSV';
128
+
129
+
130
+
131
+ -- 変数の中身確認
132
+
133
+ \echo :filepass
134
+
135
+
136
+
137
+ \set copycmd '\copy TEST_TABLE from ':filepass' with encoding ''sjis'' csv;'
138
+
139
+
140
+
141
+ -- \copyコマンド実行
142
+
143
+ :copycmd
144
+
145
+ ```
146
+
147
+ 実行結果
148
+
149
+ ```SQL
150
+
151
+ -- 変数の中身確認
152
+
153
+ \echo :filepass
154
+
155
+
156
+
157
+ D:\SQLTEST\CSV\TEST.CSV -- ちゃんとファイルパスがセットされている
158
+
159
+
160
+
161
+ -- \copyコマンド実行
162
+
163
+ :copycmd
164
+
165
+
166
+
167
+ psql : psql:D:/SQLTEST/SQL/TEST.sql:42: ERROR: syntax error at or near "'sjis'"
168
+
169
+
170
+
171
+ ```
172
+
173
+ なぜ 'sjis' がsyntax errorになったのかは不明ですが、
174
+
175
+ filepassのエラーは解消されたのかな?と思っています…。引き続き調べています

1

誤字があったため修正

2021/11/03 03:08

投稿

L.J
L.J

スコア2

test CHANGED
File without changes
test CHANGED
@@ -86,7 +86,7 @@
86
86
 
87
87
 
88
88
 
89
- 実際のファイルぱすは"D:\SQLTEST\CSV\TEST.csv"のため、
89
+ 実際のファイルパスは"D:\SQLTEST\CSV\TEST.csv"のため、
90
90
 
91
91
  sqlファイルのほうで ':CSVDIR\TEST.CSV' と記載しましたが、上手くいきません。
92
92