- PR -

DB2でクリエイトしたはずのテーブルが存在しない。

投稿者投稿内容
ひろひろ
会議室デビュー日: 2004/07/07
投稿数: 8
投稿日時: 2004-07-12 14:26
こんにちわ。
現在、DB2上のあるスキーマ上にテーブルを作成しているのですが、
クリエイトしたはずのテーブルがコントロールセンターからは参照できず、
しかし、Common SQL Environmentというフリーのツールからはそのテーブルの存在を確かめられます。

コマンド行プロセッサーを使って、そのクリエイトしたテーブルへデータを入れようとしているのですが、DB2関連ツールからはそのテーブルが認識できないため、作業ができなくなっています。
この問題に関して、どなたかご存知でしたらご教示願います。
カニ
ベテラン
会議室デビュー日: 2004/06/24
投稿数: 53
お住まい・勤務地: 横浜・川崎
投稿日時: 2004-07-12 14:35
"あるスキーマ" ってのが気になりますが,テーブル作成手順はどうなってるんでしょう?
何を使ってます?

"DB2関連ツール" というのが何を指しているのか分かりませんが,CLPで Insert を実行した際のエラーメッセージはどのようなものでしょう?


ひろひろ
会議室デビュー日: 2004/07/07
投稿数: 8
投稿日時: 2004-07-12 15:03
カニさん、返答ありがとうございます。
関係あるかどうかはわかりませんが、DB2のバージョンは7.1です。

@テーブル作成手順について
CREATE文をファイルに記述し、CLPにて次にコマンドを入力しています。
「db2 -tvf [CREATE文が記述されたファイル名] | tee [CREATE文が記述されたファイル名].log」

A
実は、LOADコマンドにて、データをいれようとしておりまして、それがエラーとなっています。それは次のコマンドです。
LOAD FROM C:\HOGEHOGE.CSV OF DEL REPLACE INTO COMMON.テーブル名
STATISTICS YES AND INDEXES ALL;

いや、実は、↑でREPLACEとしているのは、METHOD Lにて、各フィールドのバイト数刻みを記述できない(可変長レコード)なので、しかたなくそうしています。

今、CLPで1件のレコードをINSERTしてみましたら、問題なくINSERTできました。
エラーとはなりませんでした。
そして、CLPでSELECT COUNT(*) により、そのテーブルの件数を確認してみましたら、
1レコードあると、かえってきました。
しかし、相変わらず、コントロールセンターにはそのテーブル名は表示されてきません。

こんな感じです。説明が下手で申し訳ないです。

カニ
ベテラン
会議室デビュー日: 2004/06/24
投稿数: 53
お住まい・勤務地: 横浜・川崎
投稿日時: 2004-07-12 15:17
テーブル名が表示されない件:
・コントロールセンターで "最新表示" しても出ませんか?
・CLP で LIST TABLES を実行しても出ませんか?

ロード実行時のエラー:
・エラーコード,エラーメッセージは?
ひろひろ
会議室デビュー日: 2004/07/07
投稿数: 8
投稿日時: 2004-07-12 15:34
カニさん
素早いお返事ありがとうございます。

・コントロールセンタでの最新表示について
なんどもやっているのですが、まったく表示されません。
・CLP での LIST TABLESの実行
以下のように0となっています。
-------------------------------------------------------
db2 => list tables

表/視点
タイプ 作成時刻
------------------------------- -------

0 レコードが選択されました。
-------------------------------------------------------

ロード実行時のエラーについて
下記のエラーが表示されています。
テーブルの設計ミスとデータ不備が原因のようです。
-----------------------------------------------------------------------------
SQL3125W 宛先のデータベースの列よりデータが長いために、行 "F0-1"、列 "1"
の文字データが切り捨てられました。

SQL3137W 行 "F0-1"
が短すぎます。ヌルにできないデータベースの列にロードされる入力値のうち、少なくと
も 1 つが足りません。この行はロードされません。
-----------------------------------------------------------------------------

また、「索引」の所には、表名として、CREATEしたテーブル名がのっています。
以上になります。
お手数をお掛けして申し訳ありません。
カニ
ベテラン
会議室デビュー日: 2004/06/24
投稿数: 53
お住まい・勤務地: 横浜・川崎
投稿日時: 2004-07-12 15:58
コントロールセンターで,フィルターが設定してあるとかないですか?
LIST TABLES FOR SCHEMA スキーマ名 ではどうでしょう?
ひろひろ
会議室デビュー日: 2004/07/07
投稿数: 8
投稿日時: 2004-07-12 16:08
ご対応ありがとうございます。
・フィルターについて
使っておりません。

・LIST TABLES FOR SCHEMA スキーマ名の実行について
おお!表示されました!
※すいませんが、実行結果のテーブル名称は実際のものと変更してあります。

----------------「実行結果」----------------

db2 => LIST TABLES FOR SCHEMA COMMON

表/視点
タイプ 作成時刻
------------------------------- --------------- ----- --------------------------
テーブルA COMMON T 2004-07-12-15.57.10.436001
マスタA COMMON T 2004-07-12-15.36.41.717001
マスタB COMMON T 2004-07-12-15.42.03.749001
マスタC COMMON T 2004-07-12-15.24.08.436001
マスタD COMMON T 2004-07-12-15.44.38.124001

5 レコードが選択されました。
-------------------------------------------------------------------

しかし、なぜこういう結果になってしまったのでしょうか?
どこがいけなかったのか自分ではよくわかりません。
ご教示いただければ幸いです。

カニ
ベテラン
会議室デビュー日: 2004/06/24
投稿数: 53
お住まい・勤務地: 横浜・川崎
投稿日時: 2004-07-12 16:22
『DB2でクリエイトしたはずのテーブルが存在しない』という当初の問題に関しては,
テーブルは存在しており CLP で一覧表示され Insert も可能であることから解決ですね.

コントールセンターに表示されないのは・・・何なんでしょう.分かりません.

ロードエラーはデータがおかしいのかな?
データに改行コードが入ってるとエラーになったりしますが,もしそうなら
DELPRIORITYCHAR を設定すればよいかも.

スキルアップ/キャリアアップ(JOB@IT)