Kita perlu menulis hasil kueri SELECT ke file csv. Bagaimana itu bisa dilakukan dengan menggunakan T-SQL di SQL Server 2008 r2? Saya tahu itu bisa dilakukan di SSIS, tetapi untuk beberapa alasan, kami tidak memiliki opsi ini.
Saya mencoba menggunakan proc yang disarankan dalam artikel di bawah ini, tetapi ketika saya menjalankan proc, SQL mengeluh bahwa tidak dapat menjalankan sys.sp_OACreate dan sys.sp_OADestroy yang dipanggil dalam proc ini.
Apakah Anda tahu cara mengaktifkan komponen ini atau mengetahui cara lain yang lebih baik untuk menulis ke file menggunakan T-SQL?
Terima kasih sebelumnya.
sumber
Menambahkan ke jawaban sebelumnya, yang membantu Anda mengotomatiskan tindakan, jika Anda hanya membutuhkannya dari waktu ke waktu Anda dapat melakukannya di Management Studio, cukup klik kanan pada header - Simpan hasil sebagai -> pilih file .csv .
Atau jika Anda ingin melakukan itu untuk setiap pernyataan pilih yang Anda jalankan, Anda bisa mengubah arah output dari hasil ke file. Gunakan Alat -> Opsi -> Hasil Kueri - Hasil ke file .
Cara lain, yang dapat diotomatisasi dengan mudah, dan memanfaatkan SSIS, adalah dengan menggunakan fitur Ekspor Data Management Studio. Klik kanan pada database -> Tugas -> Ekspor data. Ada penyihir dengan banyak opsi di sana. Anda harus memilih sumber basis data, tujuan dan opsi lainnya. Untuk tujuan, pastikan itu "Flat file", telusuri dan pilih tipe .csv, pilih format apa pun yang Anda butuhkan dan pada akhirnya Anda akan mendapatkan paket SSIS yang dapat disimpan secara lokal dan diulang sesuai kebutuhan.
sumber
Gunakan T-SQL
Tapi, ada beberapa peringatan:
sumber
Teknologi rendah, tapi ...
sumber
col1 + ',' + cast(col2 as varchar(10)) + ',' + col3
sebagai nama kolom, dan mencetak NULL di semua tempat.Sepertinya Anda sudah memiliki solusi yang dapat diterima, tetapi jika Anda memiliki pengaturan db mail, Anda berpotensi melakukan sesuatu seperti ini:
Jika Anda tetap mengirim email ke suatu tempat, mungkin ada beberapa langkah yang bisa Anda lakukan.
sumber
Ini dapat dengan mudah dilakukan dalam proses 3 langkah:
Tulis kueri Anda sebagai
SELECT INTO
kueri. Ini pada dasarnya akan mengekspor hasil permintaan Anda ke dalam tabel.Catatan, tabel ini tidak dapat ada saat kueri berjalan, karena jenis kueri ini ingin membuat tabel sebagai bagian dari eksekusi.
Kemudian gunakan SSIS untuk mengekspor hasil dari tabel itu ke
.csv
. Panduan Ekspor SSIS memungkinkan Anda memilih pembatas, dll. Ini sangat berguna untuk menggunakan | pembatas dalam kasus di mana set hasil berisi koma.Klik kanan
DB Name > Tasks > Export Data
Setelah Ekspor selesai, jalankan
DROP TABLE
perintah untuk membersihkan tabel log Anda.sumber
Saya menggunakan MS Access DoCMD untuk mengekspor CSV dari SQL Server. Itu dapat melakukannya dengan satu perintah. Database akses hanya digunakan untuk mengaktifkan perintah akses. Berkinerja baik, dan sebagai manfaat tambahan (tidak yakin mengapa) itu membuat skema.ini untuk tabel yang diekspor.
Adam
sumber
Prosedur ini akan menghasilkan file CSV dengan output dari kueri yang Anda berikan sebagai parameter. Parameter ke-2 adalah nama file CSV Anda, pastikan Anda memberikan nama file dengan jalur yang dapat ditulis.
Berikut ini skrip untuk membuat prosedur:
sumber