Amazon Redshift編~データをインポートしてみよう!(エラー編)~

こんにちは!中の人です。

今回も前回のレシピに引き続き、Amazon Redshift編です!

今まで4回にわたってAmazon Redshiftでのデータのインポート方法について紹介させてもらいましたが、実際に操作を行なっていると様々なエラーが返ってきます。

記事を書く中でも数々のエラーが出ました。今回のレシピでは、エラーメッセージとその対処方法について紹介します。

**※ 『SQL Workbench』での操作をベースとして記述しております。

**

今までのAmazon Redshiftでのデータのインポートに関するレシピは下記を参照してください。

■ Amazon Redshift編~CSVファイルのデータをインポートしてみよう!~

■ Amazon Redshift編~MySQLのデータをインポートしてみよう!~

■ Amazon Redshift編~複数ファイルを一括インポートしてみよう!~

■ Amazon Redshift編~圧縮ファイルをインポートしてみよう!~

それでは、データインポートの際のエラーについて記述していきます。

エラーの表示ですが、主に以下の場所に表示されます。

2013061701

上側で実行された結果が下側に表示されます。

エラーが起きたクエリが赤く強調されているので複数実行した場合もエラーを特定することが容易です。

では順番にメッセージについての説明していきましょう!

**

SELECT executed successfully

**

SELECTが成功している事と、実行時間が表示されます。

SELECT以外にINSERT/UPDATE/DELETE/COPYなどがあります。

**

An I/O error occured while sending to the backend.

**

クエリを送っている間にエラーが発生した時に表示されます。

長時間操作を行わなかった場合によく発生します。再度実行すると問題なく実行できる場合もありますが、新たにconnectすることでも解消されます。

**

An error occurred when executing the SQL command: [SQL文]

**

SQL文にエラーがあった特の表示です。

この場合、より詳細なエラーが表示されます。

**

ERROR: column “***” does not exist in [テーブル名]

**

他のSQLにもあるエラーは一通りあります。上記は参照しているカラムが無い場合のエラーです。

**

ERROR: The specified S3 prefix ‘***’ does not exist

**

S3からコピーを行う場合に参照先のバケットやファイルが無い場合のエラーです。

**

ERROR: Load into table ‘***’ failed. Check ‘stlloaderrors’ system table for details.

**

このエラーが表示されることがよくあると思います。その時は以下のクエリを実行してviewを作成します。

1create view loadview as2(select distinct tbl, trim(name) as table_name, query, starttime,3trim(filename) as input, line_number, colname, err_code,4trim(err_reason) as reason5from stl_load_errors sl, stv_tbl_perm sp6where sl.tbl = sp.id);

作成したloadviewに対して、「stlloaderrors」が収納されていることが確認できます。

確認方法はSQL文で以下の様に参照する事も可能です。

1select * from loadview where table_name='[テーブル名]';

また、SQL Workbenchの「Database explorer」にタブを切り返して、参照することも可能です。

2013061702

以下に、エラーコードについて簡単にまとめておきます。

Error code 説明 対処方法
1200 未知のエラー! サポートにお問い合わせだそうです。見たことないですが。
1201 delimiter が見つかりません。 SQL文のdelimiterの指定が間違えているか、データのフォーマットに間違い無いか確認しましょう。
1202 入力データのカラム数が構造より多いです。 カラム数が間違えていないか、特定行だけカラム内にdelimiterが入っていないか確認しましょう。
1203 入力データのカラム数が構造より少ないです。 カラム数が間違えていないか確認しましょう。
1204 指定したカラムサイズより大きなデータがあります。 入力するデータのサイズ(文字数)を見なおすか、テーブル側のカラムサイズを大きくしましょう。
1205 データフォーマットが正しくありません。 該当カラムに正しくないデータフォーマットが含まれます。該当カラムのデータを見直しましょう。
1206 タイムスタンプフォーマットが正しくありません。 Redshiftで許可しているタイムスタンプのフォーマットに変更しましょう。
1207 データが予期している範囲外です。 該当部分のデータを見直しましょう。
1208 FLOATフォーマットエラー FLOATのフォーマットのデータを入力するか、型を見直しましょう。
1209 DECIMALフォーマットエラー DECIMALのフォーマットのデータを入力するか、型を見直しましょう。
1210 BOOLEANフォーマットエラー BOOLEANのフォーマットのデータを入力するか、型を見直しましょう。
1211 入力行にデータがありません。 .
1212 読み込むファイルがありません。 指定しているバケットやファイル名を見直しましょう。
1213 NOT NULLなのにデータがありません。 NULLを許可するか、データを入れましょう。
1214 VARCHARフィールドエラー .
1215 CHARフィールドエラー CHARに日本語を入れていませんか?

いかがでしたでしょうか?

エラーメッセージの見方と対処方法がわかることで、よりスムーズにRedshiftを使うことができます。

他にもエラーが見つかりましたらアップデートしていきたいと思います!

次回は『Amazon Redshift編~S3ホスティングのログを取り込んでみよう!~』として、S3に溜まったアクセスログを取り込む方法を紹介します。

お楽しみに!

この記事を書いた人

aws-recipe-user