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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PostgreSQL

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

解決済

PostgreSQLのERROR:推定最終列の後に余計なデータがありましたへの対処方法

退会済みユーザー

退会済みユーザー

総合スコア0

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PostgreSQL

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

2回答

0グッド

0クリップ

45887閲覧

投稿2018/11/30 00:37

編集2018/12/06 00:26

件名の通りです。対処方法をご教授いただけませんでしょうか?よろしくお願いいたします。

解決したい問題
下記エラーの対処方法をご教授いただきたいです。

一応の解決方法
下記で一応動きました。。

sql

1\encoding utf8 2 3drop table access_log; 4\i src/access_log.ct 5\copy access_log from 'src/access_log.bz2.csv' with csv header null '' delimiter ',' quote e'"';

エラー内容

log

1 22018-11-30 08:55:31 JST ERROR: 推定最終列の後に余計なデータがありました 32018-11-30 08:55:31 JST コンテキスト: access_logのCOPY。行番号 18677590: "hoge.fuga.net.mx~-~-~23/Sep/2018:10:16:30 +0900~GET~/index.php?q=hoge_fuga&search_..." 42018-11-30 08:55:31 JST ステートメント: COPY access_log FROM STDIN WITH CSV DELIMITER E'~' header null ''; 5

TSVファイルの検索結果

bash

1$ grep -n hoge.fuga.net.mx access_log.tsv 216632811:hoge.fuga.net.mx~-~-~23/Sep/2018:10:16:30 +0900~GET~/index.php?q=hoge_fuga&search_id=1234"~200~144241~-~- 316632832:hoge.fuga.net.mx~-~-~23/Sep/2018:10:16:32 +0900~GET~/index.php?q=hoge_fuga&search_id=1234&page=piyo~200~331344~-~- 4 5$ tail -10 access_log.tsv 6m123.piyo.piyo.ne.jp~-~-~01/Oct/2018:01:59:58 +0900~GET~/index.php?&action=ghi&q%3Dabc%26id%3D123&text=&_=123~200~38~https://www.fuga.com/index.php?q=abc&id=1234~Mozilla/5.0 (iPhone; CPU iPhone OS 11_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15G77 YJApp-IOS jp.co.yahoo.ipn.appli/4.11.6 7m123.piyo.piyo.ne.jp~-~-~01/Oct/2018:01:59:58 +0900~GET~/index.php?&action=def~200~56~https://www.fuga.com/~Mozilla/5.0 (iPhone; CPU iPhone OS 11_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15G77 YJApp-IOS jp.co.yahoo.ipn.appli/4.11.6 8m123.piyo.piyo.ne.jp~-~-~01/Oct/2018:01:59:58 +0900~GET~/index.php?&q=abc&id=123~200~306~https://www.fuga.com/~Mozilla/5.0 (iPhone; CPU iPhone OS 11_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15G77 YJApp-IOS jp.co.yahoo.ipn.appli/4.11.6 91-2-3.hoge.fuga.ad.jp~-~-~01/Oct/2018:01:59:58 +0900~GET~/index.php?q=123&search=%AB%BC%DF~200~44979~https://www.google.com/~Mozilla/5.0 (Linux; Android 8.1.0; F-04K Build/V18R067C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36 10123.hoge.fuga.ne.jp~-~-~01/Oct/2018:01:59:59 +0900~GET~/index.php?&q=def&search=~200~51~https://www.hoge.net/index.php?q=123~Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16A366 YJApp-IOS jp.co.yahoo.ipn.appli/4.11.6 11123.hoge.fuga.ne.jp~-~-~01/Oct/2018:01:59:59 +0900~GET~/index.php?&q=def~200~56~https://www.hoge.net/~Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16A366 YJApp-IOS jp.co.yahoo.ipn.appli/4.11.6 12Oct 1 02:00:00 svr1 newsyslog[50902]: logfile turned over 13hgoe.fuga.co.jp~-~-~01/Oct/2018:02:00:00 +0900~GET~/blog/?q=1~200~19843~-~- 14hoge1234567890.fuga.net~-~-~01/Oct/2018:02:00:00 +0900~GET~/index.php?q=abc&page_id=1234&gclid=ABCDEFG~200~47956~-~Mozilla/5.0 (iPhone; CPU iPhone OS 10_2_1 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) GSA/59.0.213668279 Mobile/14D27 Safari/602.1 15. 16

バッチファイル

bat

1 2call .\parameters-windows.bat 3%PSQL% -f load.sql 4pause 5 6rem parameters-windows.bat 7set PGHOST=localhost 8set PGPORT=5432 9set PGDATABASE=postgres 10set PGUSER=postgres 11set PSQL="C:\Program Files\PostgreSQL\9.4\bin\psql" 12 13

SQL

sql

1 2\encoding utf8 3 4drop table access_log; 5\i src/access_log.ct 6\copy access_log from 'src/access_log.bz2.tsv' WITH CSV DELIMITER E'\t' header null ''; 7

ct

1create table access_log 2( a text 3, b text 4, c text 5, d text 6, e text 7, f text 8, g text 9, h text 10, i text 11, j text 12);

環境

  • Windows10
  • PostgresSQL 9.4

参考サイト
PostgreSQLのcopyではまった

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答2

2

ベストアンサー

推定最終列の後に余計なデータがありましたは項目に区切り記号を含むデータの場合に発生します。
区切り記号である~が含まれているのでしょう。

COPYコマンドのオプションで文字列の区切り記号をQUOTEで指定できます。
CSV作成時に項目を"などで括るようにすれば、項目の内容まで区切り記号を検索することは無くなりますし、通常の,区切りのCSVでの対応も可能になります。

追記

行数を見るとかなり大きなものになっています。
CSVを分割して作成した方が、COPYでのトランザクション分割となってTOTALでは処理時間は短縮されるでしょうし(並列実行も可能になる)、ファイル内容の確認も可能になりますので、検討されてはどうでしょうか。

投稿2018/11/30 03:11

編集2018/11/30 03:37
sazi

総合スコア24562

papinianus👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

退会済みユーザー

退会済みユーザー

2018/11/30 03:44

saziさん、ご回答ありがとうございます。一応replaceで~を削除しているつもりなのですが、まだ残っているんですね。。 COPYコマンドのオプションのご教示、分割作成のご提案、ありがとうございます。検討してみます。

1

カンだけど、16632811行目の「"」はいいのか?
「\copy」コマンドだから念のため
psqlクライアントアプリケーションをチェックしたものの、
気になるとしたらあとはCSVとかTSVとか作ったときの盲点として、
最後データの終了を示す「.」のみの行がないことくらいかなぁ。

私のなんてたいした回答ではないけど
https://teratail.com/questions/161219
とか起こされたら嫌気が差すわ。

投稿2018/11/30 01:02

編集2018/11/30 06:58
退会済みユーザー

退会済みユーザー

総合スコア0

退会済みユーザー👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

退会済みユーザー

退会済みユーザー

2018/11/30 01:07 編集

m6uさん、ご回答ありがとうございます。 下記は読み込めています。。 $ head -772856 access_log.tsv | tail -1 hoge.fuga.com~-~-~02/Sep/2018:07:46:46 +0900~GET~/index.php?q=abc&q_id=1234"~200~143699~-~-
退会済みユーザー

退会済みユーザー

2018/11/30 01:11

tsvファイルには「.」はあるのかな?
退会済みユーザー

退会済みユーザー

2018/11/30 01:18

tsvファイルには「.」は無いです。 最後行に「.」のみの行を追加してみます。
退会済みユーザー

退会済みユーザー

2018/11/30 01:34

tsvファイルに「.」を書いたらどうなるかな?
退会済みユーザー

退会済みユーザー

2018/11/30 02:34

tsvファイルの最終行に「.」を追加しましたが、同じエラーが発生しました。
退会済みユーザー

退会済みユーザー

2018/11/30 07:10 編集

m6uさん、気分を害してしまい申し訳ございませんm(__)m 違う内容になったかと思い、別の質問を作成していまいました。 たいした回答ではないとは思っておりません。

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PostgreSQL

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