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

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

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

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

3回答

11554閲覧

PostgreSQL CSVインポートについて

kitten

総合スコア25

PostgreSQL

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2019/03/15 00:52

編集2019/03/15 02:15

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

以前、解決したはずの事が今度は中々解決出来ずにいるので
ここで質問させていただくことにしました。

問題はエクセルcsvファイルをCOPYコマンドで読み込む際に以下のエラーが出る点です。

testdb=# COPY search_gaityu FROM 'C:\PostgreSQL\11\横山研磨.csv' WITH CSV; ERROR: could not open file "C:\PostgreSQL\11\csv\横山研磨.csv" for reading: No such file or directory HINT: COPY FROM instructs the PostgreSQL server process to read a file. You may want a client-side facility such as psql's \copy.

試したこと

以下のサイトを読み漁って試行錯誤してみましたが依然として
解決しない状況が続いております。どなたかご教授お願い致します。
TSRSの技術情報メモ

Symfoware
Qiita
ソフラボの技術ブログ
PostgreSQL 9.4.5文書

補足情報(FW/ツールのバージョンなど)

psql (11.1)

以下CREATE TABLE文とALTER文です。

SQL

1 2testdb=# create table search_gaityu( 3testdb(# customer 4testdb(# char(80), 5testdb(# pname char(80), 6testdb(# parts char(80), 7testdb(# parts2 char(80), 8testdb(# stock money); 9CREATE TABLE 10testdb=# \d search_gaityu 11 テーブル "public.search_gaityu" 12|| 照合順序 | Null 値を許容 | デフォルト 13----------+---------------+----------+---------------+------------ 14 customer | character(80) | | | 15 pname | character(80) | | | 16 parts | character(80) | | | 17 parts2 | character(80) | | | 18 stock | money | 19 20testdb=# alter table search_gaityu add other char(80); 21ALTER TABLE 22 23testdb=# select * from search_gaityu; 24 25 customer | pname | parts | parts2 | stock | other 26----------+-------+-------+--------+-------+------- 27(0)

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

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

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

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

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

guest

回答3

0

自己解決

testdb=# COPY search_gaityu FROM 'C:\PostgreSQL\11\yokoyama.csv' WITH CSV;
COPY 106

上記の通り解決いたしました。
以下Orlofsky様のやり取り後、やったことを記述します。

1)取りあえずカラム数が足りないとうるさいので2列程カラムを追加。
2)stockのデータ型moneyに問題があるのではないかと考えデータ型を
moneyからchar(80)に変更。

その結果、
ERROR: missing data fro column " other3 "と出たので
たぶん"other3"はいらんよって事だろうということでdrop。

結果、解決いたしました。
解凍していただいた皆様ありがとうございました。

投稿2019/03/15 02:45

kitten

総合スコア25

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

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

sazi

2019/03/15 03:04

そのCSVは文字列区切り記号無しですよね? 最終的には2つ追加したうちのカラムの一つは残っているという事ですか? 解決していた時と状況はどう違うのですか? 状況からは、CSVのデータ形式が変更されたか、テーブルの定義を変更したの何れかのように見受けられますが。
kitten

2019/03/15 03:56

CSVはカンマ区切りで保存したものになります。 カラム名other以外に多めにとってother2とother3を追加後 other3のみをdropしたので解決時の状況と致しましては otherとother2が残る形になります。
sazi

2019/03/15 04:01 編集

カンマ区切りではなく、文字列区切り記号です。 '9,000,000'のような'の事です。 解決の状況をより明らかにしようとしているだけですので、コメントしなくても問題ありません
kitten

2019/03/15 04:02

誤解すみません。 はい、確認しましたがそのような文字区切りは入っておりませんでした。
kitten

2019/03/15 04:05

加えてこの質問の続きで、今新たに問題が発生したので そちらも一度目を通して頂きたく思います。
sazi

2019/03/15 04:09

多分money型なので、,を数値の区切りと解釈しているのでしょう。 'のような文字列区切りがあれば,は項目の区切り記号と認識されて問題なかったはずです。 なので、型をchar()に変更して上手くいったのではないかと思われます。
guest

0

HINT: COPY FROM instructs the PostgreSQL server process to read a file. You may want a client-side facility such as psql's \copy.

psqlからであれば、\copyで、ローカルに配置されたCSVをインポートはできますが、psql以外であればpostgresサーバー上で認識できるパスである必要があります。

psqlはファイルをストリームで読み込んで、postgresサーバーと連携します。
psqlを介さない場合は、別途ファイルをローカル・サーバー間移動するなどが必要になります。

投稿2019/03/15 01:46

編集2019/03/15 01:51
sazi

総合スコア25173

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

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

0

ファイル名の全角文字を半角英数字に変えて試してみては?

投稿2019/03/15 00:56

Orlofsky

総合スコア16415

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

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

kitten

2019/03/15 01:26

ご回答有難うございます。 ご指摘通り半角英数字(今回の場合yokoyama.csv)に変換したところ extra data after last expected columnと表示され こちらのエラーで検索したところどうやらカラム数が足りないということで ALTER文で不足分を追加したのですがそれでも尚以下の様にエラーが出てしまう状況です。 testdb=# COPY search_gaityu FROM 'C:\PostgreSQL\11\yokoyama.csv' WITH CSV; ERROR: extra data after last expected column CONTEXT: COPY search_gaityu, line 1: "(有)横山研磨,,レバー,,3232 059 0040,2,"
Orlofsky

2019/03/15 01:38

>ERROR: extra data after last expected column まだ、CSVの列がテーブルの列より多いようです。 質問にCREATE TABLEを追加しては? CSVをテキストエディタで開いてカラムの後ろにゴミがはいっていないか、ファイルのエンコードがどうなっているかも確認してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問