sql >> データベース >  >> RDS >> Sqlserver

ssisの列構造を確認する方法は?

    ソリューション

    あなたのコメントに基づいて、あなたはフラットファイルを扱っています。この問題を解決するには、すべての列を1つの列として読み取り、外出先で構造を取得する必要があります。

    詳細
    1. 最初にフラットファイル接続マネージャーを追加します。
    2. フラットファイル接続マネージャーで、[詳細設定]タブに移動し、すべての列を削除して、1つの列のみを保持します(Column0)
    3. 列の種類をDT_WSTRに、長さを4000に変更します。
    4. Dataflow taskを追加します
    5. Dataflow taskの内部 フラットファイルソース、スクリプトコンポーネント、およびOLEDB宛先を追加します。
    6. スクリプトコンポーネントを開き、[入力/出力]タブに移動して、8つの出力列を追加します(Distributer_Code、Cust_code、cust_name、cust_add、zip、tel、dl_number、gstin)
    7. スクリプト言語をVisualBasicに変更します。
    8. スクリプト内に次のコードを記述します。

      Dim Distributer_Code as integer = -1
      Dim Cust_code as integer = -1
      Dim cust_name as integer = -1
      Dim cust_add as integer = -1
      Dim zip as integer = -1
      Dim tel as integer = -1
      Dim dl_number as integer = -1
      Dim gstin as integer = -1
      Dim intRowIndex as integer = 0
      
      Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
      
          If intRowIndex = 0 then
      
              Dim strfields() as string = Row.Column0.split(CChar("|"))
              Dim idx as integer = 0
      
              For idx = 0 To strFields.length - 1
      
                  Select case str
      
                  Case "Distributer_Code"
                      Distributer_Code = idx  
                  Case "Cust_code"
                      Cust_code = idx 
                  Case "cust_name"
                      cust_name = idx 
                  Case "cust_add"
                      cust_add = idx  
                  Case "zip"
                      zip = idx   
                  Case "tel"
                      tel = idx   
                  Case "dl_number"
                      dl_number = idx 
                  Case "gstin"
                      gstin = idx 
      
                  End Select
      
              Next
      
          Else
      
              Dim strfields() as string = Row.Column0.split(CChar("|"))
      
              If Distributer_Code > -1 Then Row.DistributerCode = strfields(Distributer_Code)
              If Cust_code > -1 Then Row.Custcode = strfields(Cust_code)
              If cust_name > -1 Then Row.custname = strfields(cust_name)
              If cust_add > -1 Then Row.custadd = strfields(cust_add)
              If zip > -1 Then Row.zip = strfields(zip)
              If tel > -1 Then Row.tel = strfields(tel)
              If dl_number > -1 Then Row.dlnumber = strfields(dl_number)
              If gstin > -1 Then Row.gstin = strfields(gstin)
      
          End If
      
      
          intRowIndex += 1
      
      End Sub
      
    9. 出力列をOLEDB宛先にマップします




    1. OracleデータベースでPL/SQLSYS_REFCURSORを作成する方法

    2. いくつかのパラメータが修正されたcakephp追加レコード

    3. MySQL正規表現のUnicode?

    4. PHPを使用して、テーブルを垂直ではなく水平に印刷する