- - PR -
BCP によるデータのインポートについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-01-20 19:47
■現象・質問
SYBASE DB にあるテーブルからBCPコマンドで データを抽出し 同構造をもつテーブルにBCPでインポートしようとすると、 下記のエラーメッセージがでてしまう件について。原因・解決策を教えてください。 ■エラーメッセージ このデータベースで、ノンログ形式のバルク・コピーを実行することはできません。 DBOをチェックしてください。 CTLIB Message: - L0/O0/S0/N0/0/0: blk_init(): blk layer: CT library error: Failed when CT_Lib routine ct_results() called.blk_init failed. ■状況説明 (1)本番用と開発用の2台のDBサーバがあり、データの統一性を持たせるため エクスポートとインポートを実施して、同じ環境にしたい。 (2)最新のデータが本番にはあるので、本番用からBCPによりエクスポートを実施。 全テーブルに対してエラーメッセージはなく、正常にエクスポートが出来た。 (3)(2)のデータを開発用にデータをインポートしようとすると 数10テーブルあるうち唯一、1つのテーブルのみBCPによるデータインポートが 出来なかった。(エラーメッセージは上記記載) (4)テーブル設計には同じスキーマ(SQL文)を使用している。 またGUI上でテーブルの構造(TYPE・LENGTH・NULLなど)は確認済み。 テーブルに相違はない。 (5)インポートしたデータの行数(row)は数千に及ぶため、 1つのrowだけ抽出・保存したものを使用しても、同じエラーメッセージ。 (6)既に本番に入っているデータをエクスポート。 加工せずそのままインポートしているけどもNG。 (7)他のテーブルでは上記のエラーはない。 (8)(6)のデータをinsert into〜value文で作り、ISQL上で実行すると 問題なくデータはインサートされる(データ件数も問題なし) 問題となっているテーブルの構造は Columnが 5個、全てNOT NULL。 Primary Keyは設定無し。Index(Unique含む)も設定無し。 →他テーブルでもPrimaryKeyは設定無し。ただし、Index(Unique含む)は貼っていて 唯一このテーブルのみ indexがない。(←関係あるかどうか・・・) インポート・エクスポートは コマンドプロンプト上※で BCP テーブル名 in/out -Uユーザー名 -Pパスワード -Sサーバ名 -J文字コード -c で実施。(テキスト形式・タブ区切り) ※エラーメッセージ表示のため、一部Tera Term SSHターミナルで実行しました。 コマンドプロンプト上だと文字化けしてしまうので。 長文で失礼致しました。 過去に上記問題でぶつかった方、原因・解決策を知っている方、 ご教授願います。 |
|
投稿日時: 2005-01-21 12:03
SybaseASEのBCPには、高速BCPモード、低速BCPモードが用意されています。
その違いはデータの更新に対してログを取るか否かの違いです。 BCP in しようとするテーブルにindexやトリガが設定されていると、ASEは 低速BCPを選択します。一方ご質問の状況であるテーブルにindexがない場合、 ASEは高速BCPを選択しようとします。 しかしながらログを取らないということはdump transactionによるバック アップができなくなるため、ASEはデフォルトでは高速BCPを選択できない設定 になっています。具体的にはデータベースオプションである「select into/bulkcopy/pllsort」がデフォルトでoffとなっています。 従いましてご質問の状況に際しては以下のコマンドでデータベースオプションを 設定の上高速BCPモードでロードすれば解決します。 use master go sp_dboption userdb, "select into/bulkcopy/pllsort", true go 上記に書いたように、ログをとらない為、この設定を行った後はバック アップの際に注意が必要です。具体的にはloadが完了した後、上記オプ ションをもとにもどす(trueのかわりにfalse)か、常に dump databaseコマンドを使ってフルバックアップを取る、そして dump transaction with truncate_onlyを使用してログfullを回避 するようにしてください。いずれの際も、高速BCPの後はフルバック アップを取るタイミングである事にもご注意ください。 以上です。 |
|
投稿日時: 2005-01-21 19:00
fyaga様
お世話になります。 丁寧な解説本当に有り難うございました。 頂戴した内容で試したところ、悩んでいた問題も解決しまして 当方、ほっとひと安心をしている所です。 SybaseASE BCPのモードに違いがあることも初めて知りまして 今回は本当に勉強になりました。 (とても分かりやすく明記して頂いたおかげで理解も深まりました) 教えて頂いた理由から私も出来る限りですが調べた中で、 Sybase Java Central Edition というGUI ツールにも データベースプロパティの中に「SELECT INTO/バルク・コピーを許可」 というチェックできるオプション項目があることも見つけました。 色々勉強させて頂きました。 ご親切にまた迅速に対応して頂き有り難うございます。 取り急ぎ、お礼まで。 |
1