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

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

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

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

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Q&A

解決済

1回答

3936閲覧

PostgreSQLのCOPY時のエラーについて

Y_amemiya

総合スコア5

PostgreSQL

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

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

0グッド

0クリップ

投稿2021/04/27 08:05

編集2021/04/27 08:37

Ubuntu18.04を使っているものです。
Postgesql 13.2にて、COPYコマンドでインポートを試みています。
1.5GBのファイルインポートはうまく行きました。

しかし、200GBのインポートでエラーが出てしまいます。

以下、コードです。
\copy テーブル名 from pass
WARNING: terminating connection because of crash of another server process
DETAIL: The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.
HINT: In a moment you should be able to reconnect to the database and repeat your command.
不正なソケットです

このエラー後、postgresqlのファイルも消失していました。

どなたか、このエラーの解決方法について、ご教授くださいましたら幸いです。

追記
エラーログの中身です。
could not fdatasync file "0000000100000000000000A6": Input/output error

WAL writer process (PID 2214) was terminated by signal 6: Aborted

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/04/27 08:13 編集

一度に投入するボリュームじゃない気がします。分割できないのですか? PostgreSQLから出力したものでない限り、どこか文法的に破綻する要素が含まれていたりすると面倒なので、投入データをINSERT INTO文に加工するスクリプトを起こしたりしたこともありますね。
Y_amemiya

2021/04/27 08:14

ご返信ありがとうございます。 分割できるのですが、できるなら一回でインポートしたいと思っています...
退会済みユーザー

退会済みユーザー

2021/04/27 08:21

他人が使用中だと困るということであれば、深夜に実行するためのスクリプトを組むとかして、分割したものを忘れずもれなく反映できるよう、SQLファイルにて\copyメタコマンドを記述するのも手かもしれません。
guest

回答1

0

ベストアンサー

\copyは標準出力を使用するので、標準出力絡みでバッファオーバーなどのエラーが発生したのではないでしょうか。

ファイルをサーバーに配置し、copyコマンドで実行すればエラー回避できるのではないかと思います。
ファイルをサーバーに配置できない場合は、ファイルを分割する事でしょうね。

postgresqlのファイルも消失していました。

これは、\copyコマンドで起こるとは思えないので、独自の後処理とかによるものではなないでしょうか。

投稿2021/04/27 08:44

sazi

総合スコア25206

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

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

Y_amemiya

2021/04/27 09:19

ご回答ありがとうございます。 ファイルをサーバーに配置するというのはどのような意味でしょうか...? インポートしたいファイルをどこかに移せばいいのでしょうか...?
sazi

2021/04/27 11:13

\copyはローカルのファイルの指定ができますが、copyはdbサーバーで認識できるパスにしかアクセスできません。 なのでDBサーバーから参照できるパスにファイルを置いて、copyでDBサーバーからみたパスを指定するという事です。
Y_amemiya

2021/04/28 07:26 編集

ご返信ありがとうございます。先程、1GBのデータでインポートを試したのですが、copyコマンドでも、\copyコマンドでも、同様のエラーが現れました。 ssdがおかしくなってしまったのでしょうか...? なにかわかることがありましたら教えていただきたいです。
sazi

2021/04/29 00:15

壊れているセクターなどがあるのかもしれませんね。 確かにそれが理由ならファイルサイズによって起きたり起きなかったりがあるかもしれません。 ディスクエラーが無いか確認してみて下さい。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問