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

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

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

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

PostgreSQL

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

Q&A

解決済

2回答

53184閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

CSV

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

PostgreSQL

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

0グッド

0クリップ

投稿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ではまった

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

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

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

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

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

guest

回答2

0

ベストアンサー

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

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

追記

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

投稿2018/11/30 03:11

編集2018/11/30 03:37
sazi

総合スコア25300

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

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

退会済みユーザー

退会済みユーザー

2018/11/30 03:44

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

0

カンだけど、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 違う内容になったかと思い、別の質問を作成していまいました。 たいした回答ではないとは思っておりません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問