Własna kontrolka SSIS, część 3 – O pobieraniu danych

Wiemy jak w podstawowy sposób odczytać listę plików w katalogu na serwerze. To teraz pobierzmy te pliki. Jeden z kroków kontenera pakietu SSIS generuje plik tekstowy zawierający listę plików do pobrania. Każdy z plików jest podawany w odrębnej linii – potem wczytamy plik, rozbijemy go na linie i w pętli wczytamy każdy z nich po kolei.

Dla przypomnienia – ważne jest, żeby podawać pełne ścieżki do plików względem katalogu głównego. Przeglądając dokumentację WinSCP zauważyłem jeszcze jedną nowość w wersji 5.8 beta: pojawił się parametr string FullName , który zwraca pełną ścieżkę do pliku. Nie trzeba będzie sklejać parametru przesyłanej ścieżki z nazwą pliku odczytaną jako Name. Ponieważ w kontrolce będziemy korzystać z wersji beta biblioteki to warto mieć na uwadze.

Przejdźmy do kodu. Na razie popatrzymy jak to wygląda w Powershell. Podobnie jak poprzednio zaczynamy od parametrów i funkcji, która pobierze plik. Nadal korzystamy z przykładu z dokumentacji.
Czytaj dalej

Reklamy

Własna kontrolka SSIS, część 2

Tym razem popatrzymy na obsługę jednej z dwóch funkcjonalności kontrolki. Sprawdzimy jakie pliki są na serwerze w katalogu, który nas interesuje, a w następnym poście pobierzemy pliki, które nam wyjdą z przepatrywania metadanych i tabel pomocniczych. Obie funkcjonalności będą obsługiwane z wykorzystaniem winscp.dll.

W obecnym rozwiązaniu pobieranie listy plików wykorzystuje trochę zmodyfikowany przykładowy skrypt przeszukiwania plików katalogu. Ten dostępny na stronie jest nieco bardziej zaawansowany – bo wręcz pobiera pliki i sprawdza ich zawartość, a nas interesuje tylko lista plików (ewentualnie z jakąś maską – np. chcemy tylko pliki .csv). Pierwszy zmodyfikowany fragment definiujący funkcję SearchDirectory poniżej. Czytaj dalej

Wywołaj sqlcmd z PowerShell

Zadanie jest proste: mamy skrypt z poleceniami SQL, który chcemy wywołać przez sqlcmd. Ale – w skrypcie wykorzystujemy zmienną, która na dodatek zawiera ścieżkę do katalogu. Jako przykład niech posłuży taki fragment zapisany w pliku SELECT.sql:

SELECT Imie = 'Bartek', Zmienna = '$(ScriptPath)'

Wywołanie z poziomu cmd nie stwarza problemów:

C:\> cd tmp
C:\tmp> sqlcmd -r1 -v ScriptPath="C:\tmp" -i SELECT.sql -S Serwer-f 1250
Bartek Zmienna
------ -------
Bartek C:\tmp

Poszczególne przełączniki oznaczają:

  • -r1 – chcę zobaczyć błędy na ekranie
  • -v – przekazuję zmienną o nazwie ScriptPath z wartością zawierającą jakąś ścieżkę
  • -i – nazwa skryptu wejściowego
  • -S – mój serwer
  • -f – strona kodowa

I super, a jeśli potrzebujemy uruchomić w PowerShell?

PS C:\tmp> sqlcmd -r1 -v ScriptPath="C:\tmp" -i SELECT.sql -S Serwer -f 1250
Sqlcmd: ':\tmp': Invalid argument. Enter '-?' for help.PS C:\tmp>

Czemu tak?
Czytaj dalej