Apakah mungkin untuk menyertakan header saat menggunakan MySQL INTO OUTFILE
?
mysql
into-outfile
Brett
sumber
sumber
ORDER BY
diSELECT
klausa. Baris tajuk bisa berada di mana saja dalam file yang dibuat tergantung pada urutannya.Solusi yang disediakan oleh Joe Steanelli berfungsi, tetapi membuat daftar kolom tidak nyaman ketika lusinan atau ratusan kolom terlibat. Berikut cara mendapatkan daftar kolom tabel my_table di my_schema .
Sekarang Anda dapat menyalin & menempel baris yang dihasilkan sebagai pernyataan pertama dalam metode Joe.
sumber
ORDER BY ORDINAL_POSITION
mengatasinyaGROUP_CONCAT(CONCAT('"',COLUMN_NAME,'"') order BY ORDINAL_POSITION)
Untuk pemilihan kompleks dengan ORDER BY saya menggunakan yang berikut ini:
sumber
Anda dapat menggunakan pernyataan yang sudah disiapkan dengan jawaban lucek dan mengekspor tabel secara dinamis dengan nama kolom di CSV:
Terima kasih lucek.
sumber
Ini akan memungkinkan Anda untuk memiliki kolom terurut dan / atau batas
sumber
Query OK, 100 rows affected (14.72 sec)
Pass kedua dengan milik AndaQuery OK, 101 rows affected (0.00 sec)
Saya cukup membuat 2 query, pertama untuk mendapatkan query output (limit 1) dengan nama kolom (tanpa hardcode, tidak ada masalah dengan Join, Order by, custom column names, dll), dan kedua membuat query itu sendiri, dan menggabungkan file menjadi satu CSV mengajukan:
sumber
Saya menghadapi masalah serupa saat menjalankan kueri mysql pada tabel besar di NodeJS. Pendekatan yang saya ikuti untuk memasukkan header dalam file CSV saya adalah sebagai berikut
Gunakan query OUTFILE untuk mempersiapkan file tanpa header
Ambil tajuk kolom untuk tabel yang digunakan di poin 1
Tambahkan tajuk kolom ke file yang dibuat pada langkah 1 menggunakan paket npm file prepend
Eksekusi setiap langkah dikontrol menggunakan promise di NodeJS.
sumber
Ini adalah cheat alternatif jika Anda terbiasa dengan Python atau R, dan tabel Anda dapat masuk ke dalam memori.
Impor tabel SQL ke Python atau R dan kemudian ekspor dari sana sebagai CSV dan Anda akan mendapatkan nama kolom serta datanya.
Inilah cara saya melakukannya menggunakan R, membutuhkan pustaka RMySQL:
Ini sedikit curang tetapi saya menemukan ini adalah solusi cepat ketika jumlah kolom saya terlalu panjang untuk menggunakan metode concat di atas. Catatan: R akan menambahkan kolom 'row.names' di awal CSV sehingga Anda ingin menghapusnya jika memang perlu mengandalkan CSV untuk membuat ulang tabel.
sumber
Jadi, jika semua kolom di
my_table
adalah tipe data karakter , kita dapat menggabungkan jawaban teratas (oleh Joe, matt dan evilguc) bersama-sama, untuk menambahkan tajuk secara otomatis dalam satu kueri SQL 'sederhana', misalnyadimana beberapa baris terakhir membuat output csv.
Perhatikan bahwa ini mungkin lambat jika
my_table
sangat besar.sumber
Saya pikir jika Anda menggunakan UNION, itu akan berhasil:
Saya tidak tahu cara menentukan header dengan sintaks INTO OUTFILE secara langsung.
sumber
Sebenarnya Anda dapat membuatnya berfungsi bahkan dengan ORDER BY.
Hanya perlu beberapa tipu daya dalam urutan berdasarkan pernyataan - kami menggunakan pernyataan kasus dan mengganti nilai header dengan beberapa nilai lain yang dijamin untuk mengurutkan terlebih dahulu dalam daftar (jelas ini tergantung pada jenis bidang dan apakah Anda mengurutkan ASC atau DESC)
Misalkan Anda memiliki tiga bidang, nama (varchar), is_active (bool), date_something_happens (tanggal), dan Anda ingin mengurutkan dua menurun:
sumber
Karena fungsi 'include-headers' tampaknya belum terpasang, dan sebagian besar "solusi" di sini perlu mengetik nama kolom secara manual, dan / atau bahkan tidak memperhitungkan gabungan, saya akan merekomendasikan untuk mengatasi masalah .
Alternatif terbaik yang saya temukan sejauh ini adalah menggunakan alat yang layak (saya menggunakan HeidiSQL ).
Masukkan permintaan Anda, pilih kisi, cukup klik kanan dan ekspor ke file. Itu mendapat semua opsi yang diperlukan untuk ekspor bersih, dan harus menangani sebagian besar kebutuhan.
Dalam ide yang sama, pendekatan user3037511 berfungsi dengan baik, dan dapat diotomatiskan dengan mudah .
Cukup luncurkan permintaan Anda dengan beberapa baris perintah untuk mendapatkan header Anda. Anda mungkin mendapatkan data dengan SELECT INTO OUTFILE ... atau dengan menjalankan kueri Anda tanpa batas, milik Anda untuk dipilih.
Perhatikan bahwa pengalihan keluaran ke file berfungsi seperti pesona di Linux DAN Windows.
Ini membuat saya ingin menyoroti bahwa 80% dari waktu, ketika saya ingin menggunakan SELECT FROM INFILE atau SELECT INTO OUTFILE, saya akhirnya menggunakan sesuatu yang lain karena beberapa batasan (di sini, tidak adanya 'opsi tajuk', di AWS-RDS, hak yang hilang, dan sebagainya.)
Oleh karena itu, saya tidak benar-benar menjawab pertanyaan op ... tetapi itu harus menjawab kebutuhannya :)
EDIT: dan untuk benar-benar menjawab pertanyaannya: tidak
Pada 2017-09-07, Anda tidak dapat menyertakan header jika Anda tetap dengan perintah SELECT INTO OUTFILE : |
sumber
contoh dari sensor nama tabel database saya dengan kolom (id, waktu, unit)
sumber
Saya sedang menulis kode saya dalam PHP, dan saya mengalami sedikit masalah dalam menggunakan fungsi concat dan union, dan juga tidak menggunakan variabel SQL, cara apa pun yang saya gunakan untuk berfungsi, berikut adalah kode saya:
sumber
Berikut ini cara untuk mendapatkan judul header dari nama kolom secara dinamis.
sumber
Saya ingin menambahkan jawaban yang diberikan oleh Sangam Belose. Ini kodenya:
Namun, jika Anda belum menyiapkan
"secure_file_priv"
variabel Anda, itu mungkin tidak berfungsi. Untuk itu, periksa folder yang disetel pada variabel itu dengan:Outputnya akan terlihat seperti ini:
Anda dapat mengubah variabel ini atau mengubah kueri untuk mengeluarkan file ke jalur default yang ditampilkan.
sumber
MySQL saja tidak cukup untuk melakukan ini dengan mudah. Di bawah ini adalah skrip PHP yang akan menampilkan kolom dan data ke CSV.
Masukkan nama database dan tabel Anda di dekat bagian atas.
Anda memerlukan ini untuk menjadi direktori yang Anda inginkan untuk menghasilkan keluaran. MySQL harus memiliki kemampuan untuk menulis ke direktori.
Anda dapat mengedit opsi ekspor CSV dalam kueri:
Di bagian akhir, ada panggilan eksekutif ke GZip CSV.
sumber
sumber