Bagaimana saya bisa mengekspor hasil permintaan ke file .csv di SQL Server 2008?
Bagaimana saya bisa mengekspor hasil permintaan ke file .csv di SQL Server 2008?
Jawaban:
Berikut versi layar penuh dari gambar itu, di bawah ini
Ini akan menampilkan hasil kueri Anda sebagai teks yang dibatasi koma.
Untuk menyimpan hasil kueri ke file: Ctrl + Shift + F
Ctrl+Shift+F
, itu hanya mengubah mode keluaran, itu tidak mempengaruhi hasil jika Anda sudah menjalankan kueri. Agar ini tercermin, Anda harus menjalankan kembali kueri. Ketika Anda menjalankannya dalam mode "Hasil ke File", itu akan meminta Anda untuk tempat Anda ingin menyimpan hasil.
Saya tahu ini agak lama, tapi ini cara yang lebih mudah ...
Jalankan kueri Anda dengan pengaturan default (menempatkan hasil dalam format grid, jika Anda tidak dalam format grid, lihat di bawah)
Klik kanan pada hasil kisi dan klik "Simpan Hasil Sebagai" dan simpan.
Jika hasil Anda tidak dalam format kisi, klik kanan tempat Anda menulis kueri, arahkan "Hasil Ke" dan klik "Hasil Ke Kotak"
Ketahuilah bahwa Anda TIDAK menangkap tajuk kolom!
Semoga berhasil!
Anda dapat menggunakan PowerShell
$AttachmentPath = "CV File location"
$QueryFmt= "Query"
Invoke-Sqlcmd -ServerInstance Server -Database DBName -Query $QueryFmt | Export-CSV $AttachmentPath
Add-PSSnapin SqlServerCmdletSnapin100
dan Add-PSSnapin SqlServerProviderSnapin100
.
Invoke-Sqlcmd -ServerInstance MySQLserver123 -Query $QueryFmt -querytimeout 600 | Export-CSV $AttachmentPath
Install-Module -Name SqlServer
(tetapi tidak perlu membobol Cmdlets tersebut). Juga, saya telah menyelamatkan perintah dalam script, yang tidak akan berjalan sampai aku mengubah kebijakan eksekusi: Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
.
RemoteSigned
kebijakan eksekusi akan cukup.
Jika basis data yang dimaksud adalah lokal, berikut ini mungkin merupakan cara paling kuat untuk mengekspor hasil kueri ke file CSV (artinya, memberi Anda kontrol terbanyak).
Setelah melalui proses ini secara mendalam, saya menemukan yang berikut ini sebagai pilihan terbaik
Skrip PowerShell
$dbname = "**YOUR_DB_NAME_WITHOUT_STARS**"
$AttachmentPath = "c:\\export.csv"
$QueryFmt= @"
**YOUR_QUERY_WITHOUT_STARS**
"@
Invoke-Sqlcmd -ServerInstance **SERVER_NAME_WITHOUT_STARS** -Database $dbname -Query $QueryFmt | Export-CSV $AttachmentPath -NoTypeInformation
Jalankan PowerShell sebagai Admin
& "c:\path_to_your_ps1_file.ps1"
Invoke-Sqlcmd -ServerInstance MySQLserver123 -Query $QueryFmt -querytimeout 600 | Export-CSV $AttachmentPath
Berdasarkan jawaban NS, saya memiliki skrip PowerShell yang mengekspor ke file CSV dengan tanda kutip di sekitar bidang dan dipisahkan koma dan melompati informasi header di file.
add-pssnapin sqlserverprovidersnapin100
add-pssnapin sqlservercmdletsnapin100
$qry = @"
Select
*
From
tablename
"@
Invoke-Sqlcmd -ServerInstance Server -Database DBName -Query $qry | convertto-CSV -notype | select -skip 1 > "full path and filename.csv"
Dua baris pertama memungkinkan kemampuan untuk menggunakan perintah-let Invoke-SqlCmd .
Gunakan T-SQL :
INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=D:\;HDR=YES;FMT=Delimited','SELECT * FROM [FileName.csv]')
SELECT Field1, Field2, Field3 FROM DatabaseName
Tapi, ada beberapa peringatan:
Anda harus memiliki penyedia Microsoft.ACE.OLEDB.12.0 tersedia. Penyedia Jet 4.0 akan bekerja juga, tapi ini kuno, jadi saya menggunakan yang ini sebagai gantinya.
File .CSV harus sudah ada. Jika Anda menggunakan header ( HDR=YES
), pastikan baris pertama file .CSV adalah daftar semua bidang yang dibatasi.
Menggunakan teknik SQL Server Management Studio asli untuk mengekspor ke CSV (seperti yang disarankan @ 8kb) tidak berfungsi jika nilai Anda mengandung koma, karena SSMS tidak membungkus nilai dalam tanda kutip ganda. Cara yang lebih kuat yang bekerja untuk saya adalah dengan menyalin hasil (klik di dalam kotak dan kemudian CTRL-A, CTRL-C) dan tempel ke Excel. Kemudian simpan sebagai file CSV dari Excel.
Anda dapat menggunakan QueryToDoc ( http://www.querytodoc.com ). Ini memungkinkan Anda menulis kueri terhadap basis data SQL dan mengekspor hasilnya - setelah Anda memilih pembatas - ke Excel, Word, HTML, atau CSV
INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=D:\;HDR=YES;FMT=Delimited','SELECT * FROM [FileName.csv]')
SELECT Field1, Field2, Field3 FROM DatabaseName
sebagai @Slogmeister Extraordinaire Dikutip sudah benar.
Seseorang perlu memiliki 1> File sudah hadir dengan kolom 2> Satu perlu memiliki Office diinstal
Kesalahan yang dihadapi
Msg 7303, Level 16, Negara 1, Baris 1 Tidak dapat menginisialisasi objek sumber data dari penyedia OLE DB "Microsoft.ACE.OLEDB.12.0" untuk server tertaut "(null)". "
Msg 15281, Level 16, State 1, Line 1 SQL Server memblokir akses ke PERNYATAAN 'OpenRowset / OpenDatasource' dari komponen 'Ad Hoc Distributed Queries' karena komponen ini dimatikan sebagai bagian dari konfigurasi keamanan untuk server ini. Administrator sistem dapat mengaktifkan penggunaan 'Kueri Terdistribusi Ad Hoc' dengan menggunakan sp_configure. Untuk informasi lebih lanjut tentang mengaktifkan 'Kueri Terdistribusi Ad Hoc', cari 'Kueri Terdistribusi Ad Hoc' di SQL Server Books Online.
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 0
RECONFIGURE
GO
Jika Anda tidak ingin menggunakan Powershell, jawaban ini adalah variasi dari jawaban hebat 8kb. Satu-satunya perbedaan adalah bahwa alih-alih memilih CSV sebagai format output, pilih Tab Delimited. Dengan cara ini jika ada koma di data Anda, itu tidak akan melewati sel di Excel. Juga, jika Anda memiliki pembatas default Excel yang diatur ke tab, Anda cukup melakukan salin-semua hasil permintaan SSMS (CTRL-A, CTRL-C) dan tempel ke Excel (tidak perlu menyimpan sebagai file dan mengimpor ke Excel ):
Sekarang Anda dapat mengeksekusi kueri Anda, kemudian melakukan CTRL-A untuk memilih semua hasil, kemudian CTRL-C untuk menyalin ke clipboard, kemudian beralih ke Excel 2013 (dapat bekerja pada 2007 juga, tidak yakin) dan menempel - mengasumsikan default Excel pembatas diatur ke tab.
Ya, semua ini dimungkinkan ketika Anda memiliki akses langsung ke server. Tetapi bagaimana jika Anda hanya memiliki akses ke server dari server web / aplikasi? Nah, situasinya adalah ini dengan kami kembali dan solusinya adalah SQL Server Ekspor ke CSV .