Jak wyeksportować wynik zapytania do pliku .csv w programie SQL Server 2008?
sql-server-2008
Złoto
źródło
źródło
Odpowiedzi:
Poniżej znajduje się pełnoekranowa wersja tego obrazu
Spowoduje to wyświetlenie wyników zapytania w postaci tekstu rozdzielanego przecinkami.
Aby zapisać wyniki zapytania do pliku: Ctrl + Shift + F
źródło
Ctrl+Shift+F
, zmienia tylko tryb wyjścia, nie ma wpływu na wyniki, jeśli już wykonałeś zapytanie. Aby zostało to odzwierciedlone, musisz ponownie uruchomić zapytanie. Po uruchomieniu go w trybie „Wyniki do pliku” powinien wyświetlić monit o określenie, gdzie chcesz zapisać wyniki.Wiem, że to trochę stare, ale tutaj jest znacznie łatwiejszy sposób ...
Uruchom zapytanie z ustawieniami domyślnymi (umieszcza wyniki w formacie siatki, jeśli twój nie jest w formacie siatki, patrz poniżej)
Kliknij prawym przyciskiem myszy wyniki siatki, kliknij „Zapisz wyniki jako” i zapisz.
Jeśli wyniki nie są w formacie siatki, kliknij prawym przyciskiem myszy w miejscu wpisywania zapytania, najedź kursorem na „Wyniki do” i kliknij „Wyniki do siatki”
Pamiętaj, że NIE przechwytujesz nagłówków kolumn!
Powodzenia!
źródło
Możesz użyć programu PowerShell
źródło
Add-PSSnapin SqlServerCmdletSnapin100
iAdd-PSSnapin SqlServerProviderSnapin100
.Invoke-Sqlcmd -ServerInstance MySQLserver123 -Query $QueryFmt -querytimeout 600 | Export-CSV $AttachmentPath
Install-Module -Name SqlServer
(ale nie musiałem korzystać z tych poleceń cmdlet). Również ja zapisane polecenia w skrypcie, co nie byłoby aż bym zmienił politykę wykonanie:Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
.RemoteSigned
wystarczy polityka wykonania.Jeśli dana baza danych jest lokalna, prawdopodobnie najpewniejszy sposób wyeksportowania wyniku zapytania do pliku CSV (to znaczy zapewniający największą kontrolę) jest prawdopodobnie najbardziej niezawodnym sposobem .
Skrypt programu PowerShell
Uruchom PowerShell jako administrator
źródło
Invoke-Sqlcmd -ServerInstance MySQLserver123 -Query $QueryFmt -querytimeout 600 | Export-CSV $AttachmentPath
MS Excel -> Dane -> Nowe zapytanie -> Z bazy danych .. postępuj zgodnie z instrukcjami
źródło
Opierając się na odpowiedzi NS, mam skrypt PowerShell, który eksportuje do pliku CSV z cudzysłowami wokół pola i oddzielonymi przecinkami i pomija informacje nagłówka w pliku.
Pierwsze dwa wiersze umożliwiają użycie polecenia let-polecenia Invoke-SqlCmd .
źródło
Użyj T-SQL :
Ale jest kilka zastrzeżeń:
Musisz mieć dostępnego dostawcę Microsoft.ACE.OLEDB.12.0. Dostawca Jet 4.0 też będzie działał, ale jest stary, więc zamiast tego użyłem tego.
Plik CSV będzie musiał już istnieć. Jeśli używasz nagłówków (
HDR=YES
), upewnij się, że pierwsza linia pliku .CSV to rozdzielana lista wszystkich pól.źródło
Używanie natywnej techniki SQL Server Management Studio do eksportowania do CSV (zgodnie z sugestią @ 8kb) nie działa, jeśli wartości zawierają przecinki, ponieważ SSMS nie zawija wartości w podwójne cudzysłowy. Bardziej niezawodnym sposobem, który zadziałał w moim przypadku, jest po prostu skopiowanie wyników (kliknij wewnątrz siatki, a następnie CTRL-A, CTRL-C) i wklejenie ich do programu Excel. Następnie zapisz jako plik CSV z programu Excel.
źródło
Możesz użyć QueryToDoc ( http://www.querytodoc.com ). Pozwala napisać zapytanie w bazie danych SQL i wyeksportować wyniki - po wybraniu separatora - do programu Excel, Word, HTML lub CSV
źródło
jako @Slogmeister Extraordinaire Quoted jest poprawne.
Trzeba mieć 1> Plik już obecny z kolumnami 2> Trzeba mieć zainstalowany Office
Napotkano błędy
1
Msg 7303, poziom 16, stan 1, wiersz 1 Nie można zainicjować obiektu źródła danych dostawcy OLE DB „Microsoft.ACE.OLEDB.12.0” dla serwera połączonego „(null)”.
64-bitowy http://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07AAA/AccessDatabaseEngine_x64.exe
32-bitowy http://download.microsoft.com/download/f/d/8/fd8c20d8-e38a-48b6-8691-542403b91da1/AccessDatabaseEngine.exe
2
Msg 15281, poziom 16, stan 1, wiersz 1 SQL Server zablokował dostęp do STATEMENT „OpenRowset / OpenDatasource” składnika „Ad Hoc Distributed Queries”, ponieważ ten składnik jest wyłączony w ramach konfiguracji zabezpieczeń tego serwera. Administrator systemu może włączyć korzystanie z „kwerend rozproszonych ad hoc” przy użyciu sp_configure. Aby uzyskać więcej informacji na temat włączania „Zapytań rozproszonych ad hoc”, wyszukaj hasło „Zapytania rozproszone ad hoc” w SQL Server Books Online.
źródło
Jeśli nie chcesz używać Powershell, ta odpowiedź jest odmianą świetnej odpowiedzi 8kb. Jedyna różnica polega na tym, że zamiast wybierać CSV jako format wyjściowy, wybierz opcję Rozdzielany tabulatorami. W ten sposób, jeśli w danych są przecinki, nie pominie komórek w programie Excel. Ponadto, jeśli masz domyślny separator programu Excel ustawiony na karty, możesz po prostu skopiować wszystkie wyniki zapytania SSMS (CTRL-A, CTRL-C) i wkleić do programu Excel (nie ma potrzeby zapisywania jako pliku i importowania do programu Excel ):
Teraz możesz wykonać zapytanie, a następnie wykonać CTRL-A, aby zaznaczyć wszystkie wyniki, następnie CTRL-C, aby skopiować do schowka, a następnie przełączyć się na Excel 2013 (może działać również w 2007 roku, nie jestem pewien) i wkleić - zakładając domyślne ustawienie Excela separator jest ustawiony na tabulator.
Obraz ekranu opcji zapytań SSMS
źródło
Tak, wszystko to jest możliwe, gdy masz bezpośredni dostęp do serwerów. Ale co, jeśli masz dostęp do serwera tylko z serwera WWW / aplikacji? Cóż, sytuacja była taka z nami dawno temu, a rozwiązaniem był eksport SQL Server do CSV .
źródło