実現したいこと
テーブル:DATA_TABLEへCSV:DATA.CSVのレコードを追加したいです。
発生している問題・分からないこと
実行すると以下のエラーメッセージが出ました。
エラーメッセージ
error
1SET 2psql.exe:C:\DATFIL_UPDATE02.sql:5: \copy: parse error at 'delimites'
該当のソースコード
SQL
1set client_encoding TO 'SJIS'; 2\COPY DATA_TABLE FROM 'C:\DATA.CSV' delimiters ',';
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
■試したこと1
'delimiters'を外して以下の命令を実行しました。
命令:\COPY DATA_TABLE FROM 'C:\DATA.CSV';
すると以下のエラーが出ました。
psql.exe:C:\DATFIL_UPDATE02.sql:5: \copy: parse error at ';'
delimitersが構文エラーではない・・・?
■試したこと2
COPY命令の""を付けるのと付けないのを試しました。
付けないと、CSVファイルのアドレスが不明のようなエラーが発生
■試したこと3
TOとFROMで試しました。
両者、同様の結果となりました。
■試したこと4
Truncate文とSELECT文を使用してDATA_TABLEへの接続ができているか試しました。
結果、両方の命令は正常に動作しました。
■試したこと5(追加です)
copyのヘルプを試したらdelimitersではなくdelimiterだったので変更しました。
しかし、エラーの内容は変わりませんでした。
補足
環境としては以下となります。
■環境
サーバーA :PostgreSQLのテーブルが格納されているサーバー
クライアントB:今回のエラーが発生しているクライアント
サーバーAでは全く同じCOPY命令が実行できます。
クライアントBでは実行できないため実行環境の問題なのかな・・・とも思っています。
■PostgreSQLのバージョン
PostgreSQL 9.3.7, compilid by Visual C++ build 1600, 64-bit
■COPYの構文
Description: copy data between files and tables
Syntax:
COPY table [ ( column [, ...] ) ]
FROM { 'filename' | stdin }
[ [ WITH ]
[ BINARY ]
[ OIDS ]
[ DELIMITER [ AS ] 'delimiter' ]
[ NULL [ AS ] 'null string' ] ]
COPY table [ ( column [, ...] ) ]
TO { 'filename' | stdout }
[ [ WITH ]
[ BINARY ]
[ OIDS ]
[ DELIMITER [ AS ] 'delimiter' ]
[ NULL [ AS ] 'null string' ] ]

あなたの回答
tips
プレビュー