Apakah mysqldump mampu mengekspor database

Ingatlah bahwa Excel memiliki gagasannya sendiri yang kurang terdokumentasi tentang bagaimana file CSV harus diformat dan ini bertentangan dengan gagasan MySQL sendiri tentang file CSV;

ExcelMySQL (default)MySQL (bila dikonfigurasi)SQL NULLNilai panjang nolLiteral \NLiteral NULLNilai teks yang tidak berisi koma, tanda kutip, atau jeda barisTidak terlampirTidak terlampirTidak terlampir di

mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables table1 table2 table3
1Nilai teks yang berisi koma, tanda kutip, atau jeda barisTerlampir di
mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables table1 table2 table3
1Tidak terlampir__1__1__0
  • Excel 2007-2013. - Memerlukan BOM UTF-8 terkemuka
  • Excel 2016+. - Menangani UTF-8 tanpa BOM dengan beberapa dorongan
Gunakan
mysqlsh --user="mysqlUserName" --host="serverHostName" --port=3306 --schema="databaseName"
# Once connected, run this:
util.exportTable("tableName", "file:///C:/Users/You/Desktop/test.csv", { dialect: "csv", fieldsEscapedBy: ""})
_4
Jangan tentukan enkode
mysqlsh --user="mysqlUserName" --host="serverHostName" --port=3306 --schema="databaseName"
# Once connected, run this:
util.exportTable("tableName", "file:///C:/Users/You/Desktop/test.csv", { dialect: "csv", fieldsEscapedBy: ""})
_5 atau
mysqlsh --user="mysqlUserName" --host="serverHostName" --port=3306 --schema="databaseName"
# Once connected, run this:
util.exportTable("tableName", "file:///C:/Users/You/Desktop/test.csv", { dialect: "csv", fieldsEscapedBy: ""})
6 lama yang rusak. Gunakan
mysqlsh --user="mysqlUserName" --host="serverHostName" --port=3306 --schema="databaseName"
# Once connected, run this:
util.exportTable("tableName", "file:///C:/Users/You/Desktop/test.csv", { dialect: "csv", fieldsEscapedBy: ""})
_4

Sesuai tabel di atas, MySQL dapat menghasilkan file CSV yang ramah-Excel, kecuali bahwa SQL NULLs akan selalu ditafsirkan oleh Excel sebagai teks literal, meskipun sepele menggunakan PowerQuery atau bahkan hanya Temukan-dan-Ganti di Excel untuk menggantinya dengan yang kosong

Excel dan penanda teks CSV khusus

Pengkodean Excel dan UTF-8

Anehnya, tidak sampai Excel berusia 31 tahun (Excel 2016) ketika Excel menambahkan dukungan bawaan untuk pengkodean UTF-8 dalam file tanpa memerlukan BOM, tetapi masih default untuk mengimpor dan mengekspor file CSV menggunakan default sistem Anda . g.

mysqlsh --user="mysqlUserName" --host="serverHostName" --port=3306 --schema="databaseName"
# Once connected, run this:
util.exportTable("tableName", "file:///C:/Users/You/Desktop/test.csv", { dialect: "csv", fieldsEscapedBy: ""})
_9)

  • Saat mengimpor CSV ke Excel, pastikan untuk memilih Codepage
    SELECT
        *
    FROM
        document 
    WHERE
        documentid IN ( SELECT documentid FROM TaskResult WHERE taskResult = 2429 )
    INTO
        OUTFILE 'someTableExport.csv'
        FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"', ESCAPED BY ''
        LINES TERMINATED BY '\r\n';
    
    0 untuk penanganan UTF-8 yang benar karena Excel masih default ke halaman kode berbasis non-Unicode untuk beberapa alasan
    • Perhatikan bahwa membuka file CSV di Excel tidak akan menampilkan Wisaya Impor Teks. (Mulai Excel 2021) Anda perlu menyalin dan menempelkan teks CSV ke Excel dan menggunakan menu popup untuk menggunakan wisaya warisan (dibekukan pada tahun 1994), atau gunakan Data > Dari Teks/CSV pada pita untuk menggunakan

      • Excel 2007-2013 Excel 2016+

Opsi

SELECT
    *
FROM
    document 
WHERE
    documentid IN ( SELECT documentid FROM TaskResult WHERE taskResult = 2429 )
INTO
    OUTFILE 'someTableExport.csv'
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"', ESCAPED BY ''
    LINES TERMINATED BY '\r\n';
1
SELECT
    *
FROM
    document 
WHERE
    documentid IN ( SELECT documentid FROM TaskResult WHERE taskResult = 2429 )
INTO
    OUTFILE 'someTableExport.csv'
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"', ESCAPED BY ''
    LINES TERMINATED BY '\r\n';
2
SELECT
    *
FROM
    document 
WHERE
    documentid IN ( SELECT documentid FROM TaskResult WHERE taskResult = 2429 )
INTO
    OUTFILE 'someTableExport.csv'
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"', ESCAPED BY ''
    LINES TERMINATED BY '\r\n';
3mysqlshMySQL WorkbenchCSV Sisi ServerTrueTrueTrueTrueBrokenRemote (sisi klien) CSVFalseFalseFalseTrueBrokenMySQL Server mendukungSemua versiSemua versiSemua versiHanya 5. 7 dan yang lebih baruSemua versi

  • Anda dapat melakukan ekspor CSV sisi server menggunakan klausa
    SELECT
        *
    FROM
        document 
    WHERE
        documentid IN ( SELECT documentid FROM TaskResult WHERE taskResult = 2429 )
    INTO
        OUTFILE 'someTableExport.csv'
        FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"', ESCAPED BY ''
        LINES TERMINATED BY '\r\n';
    
    5 dari kueri SELECT
    • Karena ini adalah SQL "normal" yang dijalankan oleh server MySQL, ini berfungsi terlepas dari alat klien MySQL apa pun yang Anda gunakan, jadi Anda tidak perlu menginstal MySQL Workbench
    • tetapi karena ini adalah ekspor sisi server, Anda harus memiliki izin untuk menulis ke sistem file server yang mungkin tidak Anda miliki, dalam hal ini pertimbangkan untuk menggunakan alat ekspor khusus seperti mysqldump (lihat di bawah)
  • Klausa
    SELECT
        *
    FROM
        document 
    WHERE
        documentid IN ( SELECT documentid FROM TaskResult WHERE taskResult = 2429 )
    INTO
        OUTFILE 'someTableExport.csv'
        FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"', ESCAPED BY ''
        LINES TERMINATED BY '\r\n';
    
    _8 MySQL yang harus ditentukan untuk beberapa tingkat kompatibilitas dengan pembaca CSV Excel sendiri
    • SELECT
          *
      FROM
          document 
      WHERE
          documentid IN ( SELECT documentid FROM TaskResult WHERE taskResult = 2429 )
      INTO
          OUTFILE 'someTableExport.csv'
          FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"', ESCAPED BY ''
          LINES TERMINATED BY '\r\n';
      
      _9
      • mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables document TaskResult
        
        _0 (default.
        mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables document TaskResult
        
        1, untuk Excel gunakan
        mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables document TaskResult
        
        2)
      • mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables document TaskResult
        
        _3 (default.
        mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables document TaskResult
        
        _4, seharusnya
        mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables document TaskResult
        
        5 dengan kata kunci
        mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables document TaskResult
        
        6)
      • mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables document TaskResult
        
        _7 (default. ________25______8, untuk Excel gunakan
        mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables document TaskResult
        
        4)
    • SELECT0
      • mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables document TaskResult
        
        _0 (default. SELECT2, untuk Excel gunakan SELECT3)
      • SELECT4 (default.
        mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables document TaskResult
        
        _4, untuk Excel Anda dapat menghilangkan ini atau menggunakan default MySQL)
    • Jangan gunakan SELECT6 (tanpa kata kunci
      mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables document TaskResult
      
      6 sebelumnya) karena akan mengutip semua nilai, apa pun jenisnya (i. e. itu akan mengutip SELECT_8 nilai yang akan menyebabkan Excel (secara default) menafsirkannya sebagai teks (string) alih-alih angka)
  • Perhatikan bahwa tidak ada opsi untuk menginstruksikan MySQL untuk menampilkan SQL NULLs sebagai bidang kosong, sehingga Excel akan menafsirkannya sebagai string teks yang tidak dikutip (i. e. sebagai mysqldump_0), jadi Anda ingin melakukan Find-and-Replace di Excel setelah mengimpor file
  • Jika nama file
    SELECT
        *
    FROM
        document 
    WHERE
        documentid IN ( SELECT documentid FROM TaskResult WHERE taskResult = 2429 )
    INTO
        OUTFILE 'someTableExport.csv'
        FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"', ESCAPED BY ''
        LINES TERMINATED BY '\r\n';
    
    _5 Anda (mis. g. mysqldump2 di atas) bukan jalur absolut maka itu akan disimpan ke direktori mysqldump3 basis data Anda. Jalankan mysqldump_4 untuk mendapatkan jalan. Perhatikan bahwa Anda mungkin belum tentu memiliki izin baca/tulis untuk file baru di bawah direktori itu

Jadi kueri Anda (mysqldump_5) akan terlihat seperti ini

SELECT
    *
FROM
    document 
WHERE
    documentid IN ( SELECT documentid FROM TaskResult WHERE taskResult = 2429 )
INTO
    OUTFILE 'someTableExport.csv'
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"', ESCAPED BY ''
    LINES TERMINATED BY '\r\n';
  • Untuk menyimpan dump ke file CSV menggunakan opsi baris perintah ________60______6,
  • Sayangnya opsi mysqldump_ mysqldump9 tidak akan berfungsi untuk server MySQL jarak jauh. ini karena mysqlsh0 hanya dapat mewakili jalur di server
    • Meskipun Anda dapat menggunakan pengalihan mysqlsh1 untuk menghasilkan file lokal (mis. e. mysqlsh2) Anda tidak dapat menggunakan mysqlsh3 dan opsi format lainnya dengan mysqlsh1, membuatnya tidak berguna untuk keluaran yang kompatibel dengan Excel. Jadi jika Anda jauh dan tidak bisa mysqlsh5-in maka Anda harus menggunakan MySQL Shell (mysqlsh) sebagai gantinya (lihat di bawah)
  • Perhatikan bahwa mysqldump tidak mendukung kueri SELECT untuk dumping data. itu mendukung filter gaya mysqlsh9 sederhana dengan opsi NULL0 tetapi ini tidak mendukung hal-hal seperti memfilter menggunakan NULL1 (meskipun sebagai solusi Anda dapat SELECT ke tabel baru, lalu jalankan mysqldump di tabel baru itu. Perhatikan bahwa Anda tidak dapat menggunakan NULL_4 dengan mysqldump karena Tabel Sementara memiliki cakupan koneksi)

Dalam kasus OP, karena keterbatasan yang melekat pada cara kerja opsi baris perintah NULL0, mereka ingin mengekspor kedua tabel (NULL7 dan NULL8) dan menerapkan logika filter mereka di Excel PowerQuery atau yang serupa. Lakukan ekspor seperti itu

mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables document TaskResult
  • Baris perintah di atas harus bekerja tanpa modifikasi di NULL9 Windows, \N0 macOS, dan \N1 di Linux - asalkan mysqldump ada di \N3 Anda

  • Penggunaan karakter yang disandikan hex berarti menghindari kerepotan untuk mencari tahu cara memberikan tanda kutip ganda dan jeda baris sebagai literal di shell dan terminal Anda (\N4 adalah

    mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables table1 table2 table3
    
    1, \N6 adalah
    mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables table1 table2 table3
    
    8, dan \N8 adalah
    mysqlsh --user="mysqlUserName" --host="serverHostName" --port=3306 --schema="databaseName"
    # Once connected, run this:
    util.exportTable("tableName", "file:///C:/Users/You/Desktop/test.csv", { dialect: "csv", fieldsEscapedBy: ""})
    
    1)

  • Hindari menggunakan opsi

    mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables table1 table2 table3
    
    00 (alias
    mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables table1 table2 table3
    
    01) pada baris perintah mysqldump, karena ini berarti kata sandi Anda akan disimpan dalam teks biasa ke file riwayat terminal atau konsol Anda, yang jelas merupakan risiko keamanan besar

    • Jadi jika Anda berada dalam sesi baris perintah interaktif perlu menentukan kata sandi maka mysqldump akan meminta kata sandi Anda segera ketika program berjalan sehingga tidak akan disimpan ke file riwayat Anda
    • Jika Anda ingin menjalankan mysqldump dalam konteks non-interaktif (mis. g. dari dalam aplikasi web, daemon, atau proses lain) maka (biasanya) tidak ada file riwayat yang perlu dikhawatirkan, tetapi Anda tetap harus mempertimbangkan pendekatan alternatif sebelum beralih ke penanganan kata sandi dengan cara yang tidak aman
  • Jika Anda tidak menentukan jalur absolut tetapi menggunakan nama file pendek (tidak memenuhi syarat) seperti

    mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables table1 table2 table3
    
    05 atau
    mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables table1 table2 table3
    
    06 maka itu akan menyimpan file keluaran ke direktori yang ditentukan oleh mysqldump4

Sayangnya, Anda tidak bisa (kecuali Anda tidak memiliki tanda kutip ganda di data Anda). Pada akhir 2022 MySQL Workbench memiliki bug terbuka terkait fitur ekspor CSV-nya sendiri. file keluaran tidak pernah lepas dari karakter kutipan ganda dalam teks, jadi hampir semua perangkat lunak penanganan CSV di luar sana akan melaporkan file CSV yang salah format atau mengimpor data ke kolom yang salah - jadi ini sama sekali tidak cocok untuk digunakan dengan Excel

  • Ini mungkin opsi yang paling sederhana, tetapi Anda mungkin perlu menginstal MySQL Shell karena tidak disertakan di sebagian besar instalasi MySQL
  • MySQL Shell mendukung koneksi ke MySQL Server 5. 7 dan yang lebih baru (tetapi bukan versi yang lebih lama). Jika Anda masih menggunakan MySQL Server 5. 6 atau lebih lama (maka Anda benar-benar harus memperbarui ke 5. 7 atau lebih baru) Anda harus tetap menggunakan mysqldump dijalankan secara lokal di Server MySQL itu sendiri (tetapi Anda dapat menggunakan sesi mysqlsh5, tentu saja)
    • Protokol "MySQL X" baru (
      mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables table1 table2 table3
      
      10) tidak didukung oleh MySQL 5. 7, tetapi mysqlsh mendukung koneksi non-X dengan parameter baris perintah gaya lama
  1. Instal MySQL Shell jika belum diinstal
  2. Jika Anda memulai MySQL Shell tanpa argumen baris perintah (mis. g. karena Anda menggunakan pintasan Start Menu di Windows)) kemudian gunakan perintah
    mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables table1 table2 table3
    
    12 untuk terhubung
    • Untuk MySQL5. 7 gunakan

      mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables table1 table2 table3
      
      _13

    • Untuk MySQL8. 0+ ada berbagai cara untuk terhubung, termasuk protokol "MySQL X" serta koneksi "Klasik".

    • Jika nama pengguna Anda berisi

      mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables table1 table2 table3
      
      _14 karakter literal, maka Anda perlu menyandikannya dalam persen (e. g. jika Anda menggunakan Azure MySQL maka nama pengguna lengkap Anda akan seperti
      mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables table1 table2 table3
      
      15)

    • Segera setelah Anda mengirimkan perintah

      mysqldump -h serverHostName -u mysqlUserName -p --tab="someTableExport.csv" --fields-optionally-enclosed-by=0x22 --fields-escaped-by='' --fields-terminated-by=0x2C --lines-terminated-by=0x0D0A --databases databaseName --tables table1 table2 table3
      
      _12, Anda akan dimintai kata sandi secara interaktif

      Bisakah Anda mengekspor database MySQL?

      Tab ini memungkinkan Anda untuk mengekspor data MySQL Anda . Pilih setiap skema yang ingin Anda ekspor, secara opsional pilih objek/tabel skema tertentu dari setiap skema, dan hasilkan ekspor.

      Apakah Mysqldump menjatuhkan basis data?

      Jika Anda ingin membuat file dump memaksa setiap database jatuh sebelum membuatnya kembali, gunakan juga opsi --add-drop-database. Dalam hal ini, mysqldump menulis pernyataan DROP DATABASE sebelum setiap pernyataan CREATE DATABASE .

      Bagaimana cara mengekspor seluruh database?

      Baris Perintah .
      Masuk ke server Anda melalui SSH
      Gunakan perintah cd untuk menavigasi ke direktori tempat pengguna Anda memiliki akses tulis. .
      Ekspor database dengan menjalankan perintah berikut. mysqldump --add-drop-table -h internal-db. s00000. gridserver. com -u nama pengguna -p dbname > dbname. sql

      Bisakah kita mengekspor basis data?

      Fitur impor dan ekspor metabase memungkinkan administrator membuat file ekspor, bernama MetaBase .

      Untuk apa Mysqldump digunakan?

      4 mysqldump — Program Pencadangan Basis Data . Utilitas klien mysqldump melakukan backup logis, menghasilkan satu set pernyataan SQL yang dapat dieksekusi untuk mereproduksi definisi objek database asli dan data tabel. Itu membuang satu atau lebih database MySQL untuk cadangan atau transfer ke server SQL lain.

      Bagaimana cara mengekspor file dump MySQL?

      Gunakan mysqldump untuk mengekspor database Anda. mysqldump -u nama pengguna -p database_name > data-dump. sql .