■SI Object Browser 掲示板


ユーザの皆様、開発者、サポート担当者の交流のための掲示板です!

ユーザーの皆様同士で教え合ったりもできる交流の場にしたいと思っていますので、相互協力をよろしくお願いします。
なお、過去に同じようなQ&Aがあるケースも多いので、投稿前にキーワード検索してみてください。

discussion
※各投稿のカラーは対象となる製品に対応しています。【■…OB ■…OBER ■…全般 ■…その他】
※ライセンスに関するお問合せにつきましては、お問い合わせページよりご連絡いただきますようお願いいたします。
※誹謗中傷や公序良俗に反する書き込みはご遠慮ください。運営側の判断によりメッセージを削除する場合があります。
※環境依存や技術的調査が必要な問題については掲示板上ではお答えしかねます。ご了承ください。

よくある質問(FAQ)

検索オプション 矢印

~
リセット
新規投稿
平素は格別のお引立てを賜り、厚く御礼申し上げます。
誠に勝手ながら、弊社では以下の期間を年末年始休業とさせていただきます。

2022年12月29日(木) ~ 2023年1月4日(水)

■お問い合わせについて
最終日2022年12月28日(水)の技術サポート受付は15:00までとさせていただきます。
※年末のため混雑が予想され、お問い合わせ内容によっては
 年内にご返信できない場合がございますが、
 2022年1月5日(木)より順次ご返信させていただきます。

ご不便をおかけ致し誠に申し訳ございませんが、何卒ご了承ください。
お世話になっております。

・外部出力の列タイトル出力をコメントを使用に設定
・テーブルのデータタブで項目一覧を使用し表示する項目を絞り込み

以上の状態でクリップボード出力を行った際に明細は問題ないのですが
列タイトルが絞り込み前の状態で順に表示されています。

例)A B C D という列名で BとCに絞った場合
A Bという列タイトルが表示される。(数は正常ですが内容が誤り)

コメントではなくテーブルの項目名で出す場合は正常に出力されています。
こちらは不具合でしょうか?
ご確認、ご回答ありがとうございます。

Insert処理とテーブルコピー時に「テーブルデータを含める」の動作が同じとのことでしたので、
そちらの方法でデータBKとして対応しました。

想定通りの処理が出来ましたので、解決いたしました。

ご対応ありがとうございました。
ご回答いただき、ありがとうございます。

環境に依存する問題とのこと、承知しました。
他のアプリを事前に終了させる等で対応いたします。

OBサポートです。

ご回答が大変遅くなってしまい誠に申し訳ありません。

■Excel出力時のエラーについて
お問い合わせ頂いた事象につきましては、
Excel側の仕様やご利用環境に依存することから、現在の実装上有効な対策ができていない状況でございます。
大変ご不便、ご迷惑をおかけしてしまい、誠に申し訳ありません。

CPUやメモリの利用状況によって事象の改善が図れる可能性がございますので、
別途下記方法にて事象の緩和されるかどうかお試しいただけますと幸いです。

例1:Excel出力時には他アプリケーションの実行を終了する
 Excel出力時に不要なアプリケーションを起動している際には、
 大変お手数ですがあらかじめアプリケーションを終了した上で出力の実行をお願いいたします。

例2:最新のデータを事前に読み込んだ状態でExcel出力を実施する
 Excel出力実行前の画面において、「最新のデータを読み直してから出力する」のオプションがございますが、
 こちらを利用するのでなく、事前にデータグリッド上でデータを最新化した上での出力をお願いいたします。

大変お手数ですが、何卒よろしくお願い申し上げます。

SELECT文の実行結果、約40万件のレコードをExcelファイルに出力した際、処理の途中で「クリップボードアクセスが拒否されました。を開けません」というエラーメッセージが表示され、出力に失敗します。

エラーが発生するのは20万~30万件が出力されたタイミングが多いですが、常に同じ件数ではありません。
また、PC再起動直後であれば正常出力する場合があることも確認しています。

SQLを編集して複数回に分けてデータ取得すれば回避できるとは思いますが、できれば1回で取得したく、対処方法があれば教えていただけないでしょうか。

実施環境
・製品:SI Object Browser for Oracle 21(x64)
・OS :Windows 10 Enterprise LTSC
・Office:Microsoft Office Professional Plus 2019
・Oralce:Oracle Client 18.0.0
OBサポートです。

■例①について
例①につきましては、
・テーブルのコピー(DDLによる同じ定義のテーブルを作る)
・コピーしたテーブルの定義を変更
・後付けでデータを追加
の手順における例をご提示しておりましたが、型や既存のデータの問題で単純にinsertが行えないようであれば、こちらの方法も難しいと考えられます。
※実質 例1. 例2のどちらも同じ手順となります.
 例2 につきましては例1 が可能だった場合に、より単純な方法をご提示させていただきました。


■テーブルコピー時にテーブルデータを含む設定の動作について
「テーブルデータを含める」のチェックをONの状態でコピーした際の動作と
insert~selectによるinsert処理については、ご認識の通りで同等の動作となります。
⇒どちらもinsert文による既存のデータを追加する動作となります。

■imp/expユーティリティについて
本件、外部製品となりお力添え出来ず誠に申し訳ありません。

何卒よろしくお願い申し上げます。
ご確認、ご回答ありがとうございます。

例②は、既存データの関係で変換が不可と判断しました。
(型がVARCHARの為、データ内に数値と文字が混在している)

例①ですが、
これは、私が既存テーブルではなく、コピー後に作成したテーブルを使用したい。
と記載した為、INSERT処理にてデータを追加する方法をご教示していただいた。
という認識で合っていますでしょうか。

対応方法を以下のようにする場合、
ご教示していただいたINSERT処理とテーブルコピー時に「テーブルデータを含める」の処理は、
同等の対応と思っていますが、INSERT処理と「テーブルデータを含める」に違いはありますでしょうか。

●対応方法
元々は、既存テーブルは変更せず、コピー後のテーブルを使用したいが、
制約も絡む為、やり方を変更することにしました。

実績結果テーブルのバックアップは、2種類のバックアップを作成。
・SQLPlusからExport処理でdmpファイルの取得。
 (※万が一、テーブルが破損等してもImport処理で戻せるように)
・SI Object Browser上からテーブルのコピー。
 「テーブルデータを含める」にチェックして、データのみの「実績結果_BK」テーブルの作成。 

実績結果テーブルの定義構成(ソース)をコピーしておいて、既存のテーブルは削除。
その後、項目を追加、型の変更をした定義構成でCRETE文にて実績結果テーブルを作成。
CSVデータは、SQL*Loaderにて取り込むつもりです。

■imp/expユーティリティの利用について
記載してから気づいたのですが、Oracleの機能なのに質問してしまいすみませんでした。
Oracleのリファレンスを参考に必要があれば、インストールするようにします。

ご確認ありがとうございます。

再現できた旨、承知しました。

一部の結果に問題があると比較結果全体を信用することができないのでぜひとも修正の検討をお願いします。

対応ありがとうございました。
OBサポートです。

■テーブルをコピーした上での定義変更について
お問い合わせ頂いた内容につきましては、下記方法で実現可能と考えられます。

例①)テーブルの定義のみをコピーして定義変更後にinsert ~ select を実施する方法
 1. SI Object Browserのテーブルリスト上で既存のテーブルをリネームします。
  ⇒今回のケースでは、はじめに「実績結果_BK」などにリネームを実施する

 2. その後、リネームしたテーブルを選択し、
  ショートカットもしくは右クリック > 「コピー」からオブジェクトのコピーを行います。
  ⇒コピー後、同じテーブルリストの画面上へ貼り付けを行います。
  この時
  ・インデックスを含める
  ・テーブルデータを含める
  のチェックははずしてください。
  また、テーブル名についても変更を行ってください。(元の「実績結果」へ変更しておく)

 3. 空のテーブルの定義を変更後、SQL実行画面からinsert ~ select文によるデータ追加を実行する
 2.までの手順で作成されたテーブルに対してSQL実行画面よりinsert ~ select 文を実行することで、
 退避しておいたテーブルから新規に作成したテーブルへデータを移行することが可能です。

 この際に、データの互換性を考慮する必要がある場合には、
 適宜selectする各列についてcastを行ってください。


例②)単純にテーブルコピーを行って定義変更する
 もし例①が可能であれば、既存のテーブルをコピーした状態でも定義変更は可能と考えられます。
 例えばvarchar2型のサイズを変えるのであれば、既存のデータで変更後の列を超過しないのであれば
 変更は可能です。
 また、char⇒numberについても元々あるデータを暗黙的に数値へ変更可能であれば、
 同様に定義変更が可能です。
 ⇒こちらにつきましては、弊社側で考慮不足がある可能性がございます。
  もしご利用環境で既にエラーとなり変更ができないなどであれば、
  恐れ入りますが上記方法はご利用いただけません。

■imp/expユーティリティの利用について
Oracle Instant Clientをご利用の場合でもimp/expユーティリティ自体の利用は可能です。
Oracle社が提供するTools-optional packages(Data PumpやSQL*Loaderの機能を含む拡張パッケージ)を入手し、付属のexp.exeファイル等を$ORACLE_HOME\bin配下に配置することで
SI Object Browserからもご利用いただけます。

ただし、imp/expユーティリティでは既存のテーブルデータをバイナリ形式で外部ファイルに出力
⇒その後インポート先の環境に対して同じテーブルを生成(既にある場合には上書き)といった動作で
データの作成を行うため、ご要望に沿った動作とならない可能性がございます。
恐らく今回のケースであればSQL*Loaderの機能を利用する方がご要望に沿えるかと存じます。
⇒SI Object Browser側では「ロード」機能して実行いただけますが、こちらもimp/expと同様に
 外部の実行ファイルが必要となります。

※なお、詳細な動作につきましては
 別途Oracle Databaseの公式リファレンス等をご確認ください。


大変お手数ですが、何卒よろしくお願い申し上げます。