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

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

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

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

Q&A

1回答

824閲覧

postgresで作成済みのテーブルにcsvファイルのデータをコピーする際にエラーが発生する

nana_1107

総合スコア8

PostgreSQL

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

0グッド

0クリップ

投稿2023/05/19 11:17

編集2023/05/20 03:02

実現したいこと

postgresで作成済みのテーブルにcsvファイルのデータをコピーしたいのですが、エラーが発生してしまいます。
同じエラーの出ている他質問を見たところ、スペースの有無が原因のようですが、どこを直したらよいか分かりません。

前提

ヘッダーが(no,city,population)のcsvファイルを
下記のテーブルにコピーしようとしています。
テーブル名:test
カラム: no,city,population
各カラムにデータは入っていません。

発生している問題・エラーメッセージ

character with byte sequence 0xe7 0xac 0xa6 in encoding "UTF8" has no equivalent in encoding "WIN1252"

該当のソースコード

\copy public.test (no,city,population) from C:\\csv\\test.csv" WITH (encoding 'UTF-8', header true, format csv, DELIMITER ',');

試したこと

ファイルパスは\が2つでないと、ファイルパスのエラーが出てしまいました

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

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

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

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

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

hoshi-takanori

2023/05/19 15:17

文字コードの問題な気がします。この記事にある「postgresqlにログインしてset client_encoding TO 'UTF8';を実行するという解決方法」は試しましたか? https://teratail.com/questions/305608
nana_1107

2023/05/19 15:37

コメントありがとうございます。 試してみましたが、同じエラーメッセージが文字化けして表示されました。
kaz.Suenaga

2023/05/19 17:46

操作対象のDBの文字コードと、CSVファイルの文字コードを教えてください。 psql -l で表示されるDB一覧の Encoding の部分がそのDBの文字コードです。 CSVファイルの文字コードは、メモ帳でそのファイルを開いたときに右下に表示されます。
guest

回答1

0

エラーメッセージ

character with byte sequence 0xe7 0xac 0xa6 in encoding "UTF8" has no equivalent in encoding "WIN1252"

によれば、「文字コード UTF8 の文字 0xe7 0xac 0xa6 は 文字コード WIN1252 に対応する文字がない」と言っています。
ちなみに WIN1252 はWindowsの英語版(西欧など)のデフォルト文字コードです。
WIN1252 がどこで関係するかというと、 psql を実行した際のコンソール画面の文字コードが WIN1252 です。

で、こんな記事がありました。
WindowsのpsqlでUTF8が文字化けする問題に対処する
残念ですが、Windows 版の psql でどうにか対処しようとしてもうまくいかなそうです。
上記ページでは最終的に WSL を使ってLinux版の psql を使って操作することが推奨されているようです。

その他にも pgAdmin やその他のツールを使うことを推奨する記事がありましたが、いずれも Windows 版 psql のままうまく解決しているものはなさそうです。


ちなみに UTF8 の 0xe7 0xac 0xa6 は 「符」 という漢字を示すようですが、CSVファイル内にそのような文字は含まれているでしょうか。
いないのであれば、psql がこのエラーメッセージを日本語で表示しようとしてこのエラーを発生させているような気がします。
(日本語版のエラーメッセージは「符号化方式"UTF8"において」 で始まるようなので、この1文字目でエラーを起こしている気がします)

投稿2023/05/19 18:02

kaz.Suenaga

総合スコア2037

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問