A5:SQL Mk-2

開発のこと、日々のこと

エクスポートに関する対応依頼と要望

ホーム フォーラム A5:SQL Mk-2掲示板 エクスポートに関する対応依頼と要望

11件の投稿を表示中 - 1 - 11件目 (全11件中)
  • 投稿者
    投稿
  • #3206 返信
    荒木
    ゲスト

    はじめまして。
    エクスポートに関して対応依頼と要望を書かせていただきました。

    環境
    データベース Oracle Database 12c Standard Edition Release 12.1.0.2.0 – 64bit Production 及び Oracle Database 11g Release 11.2.0.4.0 – 64bit Production
    データベースキャラクタセット JA16SJISTILDE
    各国語キャラクタセット AL16UTF16

    A5:SQL Mk-2 version 2.13.3 64bit

    ●対応依頼
    char(100)に全角50文字を格納しているフィールドをエクスポートすると
    全角50文字 + 半角空白50文字
    が出力されます。
    Oracleはバイト数指定ですが他のデータベースだと文字数指定のものもあるらしいのでその影響でしょうか。
    エクスポートしたものを編集してインポートするときエラーが出そうなので、正しいサイズで出るようになりますか。
    (空白の右側trimは他のフィールドに影響が出るため使っていません)

    ●要望
    ・エクスポートの動作負荷について
    エクスポート(一括・単一共に)を指示すると、プログラムが応答なしになり、しばらくすると応答なしが解除され完了されるため、進捗バーが確認できない状況です。
    PCのスペックの問題と思いましたが、サーバー上で動かしても応答なしになってしまうので、処理負荷の選択ができると嬉しいです。
    なお、インポート時は応答なしになることなく、ウインドウ下部に進捗が表示できていました。

    ・単一エクスポートの進捗及び結果の表示
    一括エクスポートは進捗バーと結果表示(「n個のテーブルをエクスポートしました。」)がありますが、1つずつのエクスポートの際もそれらの表示が欲しいです。
    (表示されているが応答なしのため見えていないだけの場合は申し訳ありません。)

    ・ソートについて
    データ表示やエクスポート時、主キーでソートされますが、ソートしないオプションが欲しいです。
    テーブルを開いてソートを解除すれば対応できますが、テーブル1つずつに対して行なわなければならず一括エクスポートできないためです。

    長くなってしまい大変申し訳ありません。よろしくお願いします。

    #3228 返信
    松原正和
    キーマスター

    荒木さんこんにちは。
     
    CHAR型の項目に全角文字がある場合、余計な空白が付いてしまったりするのはなかなかに根が深い問題です。データベースによってCHARの長さが文字単位だったりBYTE単位だったり…当然文字コードも異なるのでなかなか完全には対応しにくい状況です。
     
    ちょっと妥協的な対応になりますが、「文字列右側をトリム」する機能を追加したいと思います。

    単一エクスポートの進捗ですが、プログレスバーではこれは実は難しいです。理由はエクスポートの際、「片方向結果セット」モードでクエリーを実行しますが、これは結果セット全体の件数を取得できないためです。何件出力したかは当然わかるのですが、全体件数が分からないのでプログレスバーでの進捗表示ができません。代わりに、ステータスバーを用意して、「テーブル名 : ○○ records.」を更新していく方式にしたいと思います。
     
    エクスポートの並び順ですが、一括エクスポートでは現状でもソートはしていません。理由はバックアップ等の目的なら並び順は関係ないですし、order byを付けないほうが速い可能性があるからです。
     
    あと、巨大なテーブルをエクスポートすると終わるまで応答が無くなる件ですが、こちらも対処したいと思います。(途中でキャンセルできるようにも)

    #3234 返信
    荒木
    ゲスト

    ご連絡ありがとうございます。

    「文字列右側をトリム」とはどういう機能でしょうか。サイズ超過したフィールドにだけ影響を与え、設定サイズより短いフィールドについては正しく半角空白が補われるような動作でしょうか。

    エクスポートの進捗について、現在きちんと動いているかが知りたいので、「テーブル名 : ○○ records.」の表示と、最後に「完了しました」のメッセージが出れば大丈夫です。一括エクスポートにも「テーブル名 : ○○ records.」の表示が欲しいです。

    一括エクスポートのソートの件は私の勘違いでした。申し訳ありませんでした。

    よろしくお願いします。

    #3265 返信
    松原正和
    キーマスター

    荒木さんこんにちは。

    「文字列右側をトリム」とは文字列型(CHAR, VARCHAR等)全てで、文字列の右側に付加されている半角空白を取り除きます。(ただし、それによって “” になってしまう場合はトリムしません)

    #3274 返信
    荒木
    ゲスト

    [設定]-[オプション]-[Oracle]-[CHAR型データの空白を除去(右側trim)する]のオプションを、CHAR型だけでなく文字列型全てに拡張するような形でしょうか。
    私の要望としては、設定サイズぴったりになるようフィールドに半角空白をプラスしてほしいと考えていますが、例えば必要なパラメータを手動設定する方法等でも難しいでしょうか。

    #3299 返信
    松原正和
    キーマスター

    荒木さんこんにちは。
     
    例えば、サーバーの文字コードの種類と、CHAR型の長さがバイト単位なのか文字数単位なのか、などを指定するUIにすれば、それも不可能ではないと思うのですが、例えば、EBCDIC等はWindowsでは扱うのが難しかったり、パフォーマンス上の問題を引き起こしたり、文字コードを指定させるUI自体がおそらく利用上の混乱を招くような気がして、ちょっと難しい気がします。
     
    申し訳ありませんが、現状ではこれ以上は少しむつかしいかと思います。

    #3310 返信
    荒木
    ゲスト

    了解しました。ありがとうございました。

    #3996 返信
    tsu**yo**
    ゲスト

    質問がございます。
    >CHAR型の項目に全角文字がある場合、余計な空白が付いてしまったりする
    この問題は、OCI経由、直接接続にかかわらず、
    以下リンクにあります通り、UniDACコンポーネントを使用する限り発生するということでしょうか?

    ・Devart社の UniDACコンポーネントのご紹介

    Devart社の UniDACコンポーネントのご紹介

    難しいとはおもいますが、解決することを希望しています。

    PS.少しだけですが、寄付しました。
     開発に役立ててください。

    #4045 返信
    松原正和
    キーマスター

    tsu**yo** さんこんにちは。

    もしかしたら、OracleのShift_JIS(JA16SJIS, JA16SJISTILDE)限定という前提付きならば、なんとかなるかもしれない気がしています。今週末というわけにはいかなかったのですが、盲腸っと試してみることにします。

    #6872 返信
    Hata
    ゲスト

    たいへん素晴らしいアプリの開発に対して敬意を示します。
    ありがとうございます。

    ところで、このトピックには何か進展がありましたでしょうか。
    私も他の質問者と同様にこの問題が改善されないかなと思っている者です。

    当方環境
    データベース Oracle Database 11g Release 11.2.0.4.0 – 64bit Production
    データベースキャラクタセット JA16SJISTILDE
    A5:SQL Mk-2 version 2.15.0 x86

    にて、Excelへの出力を行っていますが同様に
    Oracleのchar(50) (50byte)の文字列が出力時に50文字出力(全角、半角同じ1文字)でなされてしまい困っています。

    2019/03/03の回答にあります、
    OracleのShift_JIS(JA16SJIS, JA16SJISTILDE)限定という前提付きならば、なんとかなるかもしれない気がしています。

    この状況は何か進展予定はありますでしょうか。
    お時間のあります時にご検討ください。

    #6894 返信
    松原正和
    キーマスター

    Hataさんこんにちは。
     
    すみません、「OracleのShift_JIS(JA16SJIS, JA16SJISTILDE)限定という前提付きならば、なんとかなるか」の件ですが、進んでいません。
     
    Oracleの文字長さは「バイトセマンティクス」と「文字セマンティクス」というのがあり、「CHAR(10)」とあったとき、10バイトを表すのか、10文字を表すのか指定することができます。デフォルトではバイトセマンティクスであり、10バイトなのですが、それ前提で処理を進めると、文字セマンティクスを使用したときに問題が発生してしまいます。ちょっとすぐには解決できないかもしれないです。

11件の投稿を表示中 - 1 - 11件目 (全11件中)
返信先: エクスポートに関する対応依頼と要望で#3265に返信
あなたの情報:




コメントは受け付けていません。