Musimy zapisać wyniki zapytania SELECT do pliku csv. Jak można to zrobić za pomocą T-SQL w SQL Server 2008 R2? Wiem, że można to zrobić w SSIS, ale z niektórych powodów nie mamy tej opcji.
Próbowałem użyć sugerowanego proc w poniższym artykule, ale kiedy uruchamiam proc, SQL narzeka, że nie można uruchomić sys.sp_OACreate i sys.sp_OADestroy, które są wywoływane w tym proc.
Czy wiesz, jak możemy włączyć te komponenty lub znasz lepszy sposób zapisu do pliku przy użyciu T-SQL?
Z góry dziękuję.
źródło
Dodając do poprzedniej odpowiedzi, która pomaga zautomatyzować akcję, jeśli potrzebujesz jej tylko od czasu do czasu, możesz to zrobić w Management Studio, po prostu kliknij prawym przyciskiem myszy nagłówek - Zapisz wyniki jako -> wybierz plik .csv .
Lub jeśli chcesz to zrobić dla każdej uruchamianej instrukcji select, możesz zmienić kierunek wyjściowy wyników na plik. Użyj Narzędzia -> Opcje -> Wyniki zapytania - Wyniki do pliku .
Innym sposobem, który można łatwo zautomatyzować i korzysta z SSIS, jest skorzystanie z funkcji eksportu danych Management Studio. Kliknij bazę danych prawym przyciskiem myszy -> Zadania -> Eksportuj dane. Istnieje kreator z wieloma opcjami. Powinieneś wybrać źródłową bazę danych, miejsce docelowe i inne opcje. W przypadku miejsca docelowego upewnij się, że jest to „plik płaski”, przeglądaj i wybierz typ .csv, wybierz dowolne potrzebne formatowanie, a na końcu otrzymasz pakiet SSIS, który można zapisać lokalnie i powtórzyć w razie potrzeby.
źródło
Użyj T-SQL
Ale jest kilka zastrzeżeń:
źródło
Niska technologia, ale ...
źródło
col1 + ',' + cast(col2 as varchar(10)) + ',' + col3
jak nazwę kolumny i drukuje NULL w dowolnym miejscu.Wygląda na to, że masz już akceptowalne rozwiązanie, ale jeśli masz skonfigurowaną pocztę db, możesz potencjalnie zrobić coś takiego:
Jeśli mimo to wysyłasz gdzieś plik, możesz zaoszczędzić kilka kroków.
źródło
Można to łatwo zrobić w 3 etapach:
Napisz zapytanie jako
SELECT INTO
zapytanie. To zasadniczo wyeksportuje wyniki zapytania do tabeli.Uwaga: ta tabela nie może istnieć po uruchomieniu zapytania, ponieważ ten typ zapytania chce utworzyć tabelę w ramach wykonywania.
Następnie użyj SSIS, aby wyeksportować wyniki tej tabeli do
.csv
. Kreator eksportu SSIS pozwala wybrać ogranicznik itp. Jest to bardzo przydatne przy użyciu | ogranicznik w przypadkach, w których zestaw wyników zawiera przecinki.Kliknij prawym przyciskiem myszy
DB Name > Tasks > Export Data
Po zakończeniu eksportu uruchom
DROP TABLE
polecenie, aby wyczyścić tabelę dziennika.źródło
Używam MS Access DoCMD do eksportowania CSV z SQL Server. Jest w stanie to zrobić za pomocą jednego polecenia. Baza danych dostępu służy wyłącznie do włączenia polecenia dostępu. Działa dobrze i jako dodatkowa korzyść (nie wiem dlaczego) tworzy schema.ini dla eksportowanej tabeli.
Adam
źródło
Ta procedura wygeneruje plik CSV z danymi wyjściowymi zapytania przekazywanego jako parametr. Drugim parametrem jest nazwa pliku CSV, upewnij się, że przekazałeś nazwę pliku z prawidłową ścieżką do zapisu.
Oto skrypt do utworzenia procedury:
źródło