SSIS – ogranicz długość tekstu w XML Source

Żeby wiedzieć jakiego typu dane są w źródle XML kontrolka XML Source w SSIS wymaga podania arkusza schematu XSD. Wewnętrznego (Use inline schema) lub zewnętrznego (XSD Location). Dla ułatwienia ma też przyjazną opcję generowania automatycznie schematu na podstawie wskazanego dokumentu XML – coś jak Suggest types dla połączenia do plików płaskich.

W przypadku elementów tekstowych kontrolka domyślnie zaproponuje DT_WSTR o długości 255 znaków kiedy tylko przełączymy się na zakładkę Columns.

dlugoscikolumntekstowych

Żeby to obejść musimy zmienić plik XSD ze schematem.

W moim przypadku mam do czynienia z prostym plikiem zawierającym informacje o produktach i ich przypisaniu do grupy produktów:

  
    36
    AGD 1
    AGD
    91.00
  
  
    37
    AGD 2
    AGD
    79.80
  
  ...

 

Długość kolumn w elementach ProduktNazwa i GrupaNazwa jest dość krótka, dlatego ustawię ją na 50 znaków. Domyślnie wygenerowany arkusz XSD ma postać:


  
    
      
        
          
            
              
              
              
              
            
          
        
      
    
  

ProduktNazwa i GrupaNazwa mają przypisany typ xs:string, co oznacza ciąg znaków bez określonej długości. Zaproponowane rzutowanie na tekst Unicode 255 znaków to ograniczenie wewnętrzne kontrolki dla takich przypadków. Zmiana długości na 50 znaków wymaga zdefiniowania typu prostego (simpleType) i ograniczenia (restriction). Bardzo dobre wytłumaczenie dlaczego tak należy to robić znalazłem na Stack Overflow.


  
    
      
        
          
            
              
              
                
                  
                    
                  
                
              
              
                
                  
                    
                  
                
              
              
            
          
        
      
    
  

Teraz po przełączeniu na zakładkę kolumn nie wyskakuje żaden komunikat, a metadane przepływu danych pokazują poprawnie 50 znaków jako długość tekstu.

Advertisements

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s