none
SQL Serverでのパック10進数を含むテキストの取り扱い RRS feed

  • 質問

  • 8月に「OracleからSQLServerへの移行課題」にて質問させて頂き、DTSSSISの利用、フォーラムオペレーターさんなどからアドバイスを頂き、レコード区切りとなる「CRLF」無し固定長テキストは「データのインポートおよびエクスポート (64 ビット)」の利用にて、テーブルを作成することが出来ました。

    パック10進数項目を数多く含む「CRLF」無し固定長テキストをテーブル化させるために、SQL Server Data ToolsDTS)の利用を始め、「データフロータスク」-「その他の変換元/フラットファイルソース」-「フラットファイルソースエディター」と選択し、パック10進数データを含むテキストファイルを参照させ、「データのインポートおよびエクスポート (64 ビット)」利用時の「データソースの選択」ウィンドウと同様な「フラットファイル接続マネージャーエディター」ウィンドウを表示させ、「詳細設定」によりパック10進数データを定義すればよいと思いましたが、「Data Type」での選択に悩み、前に進めない状況になりました。

    SQL Serverではテキストにパック10進数項目がある場合、「関連性の高いスレッド」に「Encoding.GetStringメソッド」を利用して対応する方法が有りましたが、DTSSSISを利用する方法はネット検索を行っても当方では見つけることができませんでした。

    ご存知の方、宜しくお願いします。

    2019年9月28日 0:01

すべての返信

  • この問題を解決しようとしています。しばらくお待ちください。返信をお待ちください。

    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com

    2019年10月1日 8:10
  • trkntrknさん、こんにちは。フォーラムオペレーターのHarukaです。
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    Encoding.GetStringメソッド“”について詳しく了解しませんがSSISで派生列変換使用できます。

    下記リンクの内容をご参照ください。

    https://www.tutorialgateway.org/derived-column-transformation-in-ssis/

    早く問題点を明確ために、サンプルデータとその結果を共有いただけないでしょうか。

    どうぞよろしくお願いいたします。


    MSDN/ TechNet Community Support Haruka
    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2019年10月2日 9:08
    モデレータ
  • ご苦労様です。

    SSISで派生列変換に関わるサイトをご提示頂きありがとうございます。

    派生列コンポーネントを利用して、パック10進数を含む固定長ファイルをテーブル化するとき、パック10進数項目を文字列として一旦一時テーブルに取り込み、この一時テーブルを派生列変換前テーブルと位置づけ、パック10進数の文字列を数値に変換させる式にて派生列を追加させた派生列変換後テーブルを以降利用するテーブルと理解しましたが、数値項目が多いテーブルは数値項目数分の派生列変換列を作成しなければならないと思いました。

    100を超える日次、月次基準テーブルの元データテキストファイルのうち、パック10進数を含むCRLFなし固定長ファイルは40件超あり、これらのテーブルへの追加コマンドは、bulk insertの利用を基本としたシステム開発の共通化を図りたいと思っています。

    当質問の発出と並行して他の方法を模索する中、ファイル変換開発ベンダーに「パック10進数項目を含むCRLFなし固定長ファイルのCSVファイルへの変換について」の問い合わせを行ないました。問い合わせ先から「概ねご要望の変換は対応可能かと存じますが、実際には試用版にてお試し下さい。」との回答を頂きました。

    日次、月次基準テーブル作成処理の自動化を考慮しつつ、「派生列変換」か「ファイル変換」の選択を検討していきたいと思います。

    2019年10月5日 7:50
  • trkntrknさん、こんにちは。フォーラムオペレーターのHarukaです。
    ご返信いただきありがとうございます。

    試用版を試したことはありますか。
    または、派生列とデータ変換のどちらを選択するかについて混乱していますか。

    下記内容がお役に立てれば幸いです。

    データ変換の目的は、データ変換のみを行うことです。

    一方、派生列タスクはほとんどの変換に使用されます。 
    これを達成するために、データ変換もその一部として組み込まれています。 
    データ変換のみを行い、他の変換は行わない場合、パッケージの単純さと読みやすさのためです。

    データ変換は、着信列のデータ型を変更する要件を完全に満たすためのシンプルなUIをエンドユーザーに提供します。

    派生列もデータ変換の達成に役立ちますが、キャストを型付けするコードを明示的に記述する必要があります。

    どうぞよろしくお願いいたします。


    MSDN/ TechNet Community Support Haruka
    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2019年10月18日 8:22
    モデレータ
  • Haruka さん、ご対応ありがとうございます。

    1023日現在、外部提供を受けたWindows仕様のパック10進数を含むCRLFなし固定長ファイル群のうち、1レコード2600byte、項目数874、内パック10進数項目数134のファイルを対象に、先頭項目から順次100項目を目途にデータ変換を行ないながら、「drop tablecreate tablebulk insert」の一括バッチ実行、テーブル確認を繰り返し行ない、本日に取り敢えず終了予定です。

    借用試用している変換ツールの名称を明かすことは不適切と思いますが、過去(20年以上前、ホスト系仕様からオープン系仕様)に利用していた改訂サーバー版です。

    変換方法は「Windows →Windows」を選択、「項目くくり記号なし」、「コンマ項目区切り付加」を設定後、先頭項目から変換前データ属性は選択クリック、長さをテンキー指定、連続しない項目にはレコード位置を0オリジンで指定しますが、Oracle利用時スクリプトの「create table」と「SQL*Loader用制御ファイル」を見つつ、ただただ機械仕事です。

    「一方、派生列タスクはほとんどの変換に使用されます。」の具体的な利用紹介サイトをご提示頂けたら幸いです。

    「派生列変換」と「ファイル変換」のどちらが、効率的な自動運用に適しているか検証したく思います。

    2019年10月23日 20:51