Cara mengimpor file excel ke database MySQL


90

Adakah yang bisa menjelaskan cara mengimpor file Microsoft Excel ke database MySQL?

Misalnya, tabel Excel saya terlihat seperti ini:

Country   |   Amount   |   Qty
----------------------------------
America   |   93       |   0.60

Greece    |   9377     |   0.80

Australia |   9375     |   0.80

[Anda mungkin melihat utas ini] [1] di forum MySQL. Ini menjelaskan bagaimana melakukan apa yang Anda inginkan. [1]: forums.mysql.com/read.php?32,216343,216344#msg-216344
Kredns

1
Utilitas gratis ini membuat pengimporan spreadsheet excel ke tabel mysql cepat dan mudah panofish.net/…
panofish

+1 untuk ide baru dan berbeda. Pemrosesannya sangat lambat, pertama membaca setiap baris dalam file dan kemudian mengunggah apa pun. Butuh waktu sekitar 15 menit untuk mengimpor 5,2 ribu baris
Fr0zenFyr

Untuk beberapa spreadsheet, ini bisa lambat, karena jumlah kolom dan baris. Tapi, saya menyalahkan perpustakaan com-object microsofts yang digunakan untuk membaca spreadsheet. Program saya membaca spreadsheet secepat yang diizinkan perpustakaan. Sisipan mysql sangat cepat. Jika Anda bisa menghilangkan kolom yang tidak perlu sebelum mengimpor ... itu bisa membantu.
panofish

Saya memiliki 14 kolom pada 5173 baris. Saya telah memilih semua kolom / baris kosong dan menghapusnya untuk menghindari pemrosesan yang tidak perlu. Sistem yang saya gunakan memiliki RAM 2.5G dan prosesor core2duo, tidak banyak proses yang berjalan, tab kinerja menunjukkan penggunaan 65% di semua dan banyak RAM masih tidak terpakai. Jadi, saya rasa saya tidak akan menyalahkan perangkat keras tetapi seperti yang Anda katakan, objek MS com payah .. Saya tidak tahu kapan MS akan berhenti membangun omong kosong yang terlihat seperti penyelamat hidup untuk pemula. Saya muak melakukan omong kosong ekstra untuk produk MS.
Fr0zenFyr

Jawaban:


46
  1. Ekspor ke dalam beberapa format teks. Yang termudah mungkin adalah versi tab-delimited, tetapi CSV juga dapat berfungsi.

  2. Gunakan kemampuan data beban. Lihat http://dev.mysql.com/doc/refman/5.1/en/load-data.html

  3. Lihat setengah halaman ke bawah, karena ini akan memberikan contoh yang baik untuk data yang dipisahkan tab:

    BIDANG DIHENTIKAN OLEH '\ t' DITUTUP OLEH '' DITERBITKAN OLEH '\'

  4. Periksa data Anda. Terkadang kutipan atau pelolosan memiliki masalah, dan Anda perlu menyesuaikan sumber Anda, perintah impor - atau mungkin lebih mudah untuk memposting proses melalui SQL.


2
Saat mengekspor ke CSV, [setidaknya] excel 2013 secara aktif mencoba meracuni data dengan menggunakan tanda kutip ganda yang diloloskan VBA, menggunakan pemisah desimal yang bergantung pada lokal (berdasarkan pengaturan regional OS) untuk 0 nilai (misalnya ',', saat menggunakan 'sebagaimana ditentukan dalam pemisah properti sel untuk semua nilai lainnya.
Sebaiknya hindari

1
Perhatikan bahwa prosedur ini mengharuskan Anda membuat tabel terlebih dahulu, dengan bidang yang sesuai.
LarsH

Itu bukan satu-satunya masalah. Saya tidak yakin apakah prosedur ini berhubungan dengan benar dengan carriage return di dalam sel di excel. Bahkan impor dari csv ke excel gagal dalam hal itu
Raul Luna

1
@ afk5min apa yang Anda maksud dengan "data racun" ??? Semua tag dan markup itu sangat berguna bagi pengguna yang jelas-jelas akan mengimpornya ke produk MS lain ...
Mindwin

1
* Maksud Anda "Cara tersulit" bukan yang termudah
Revious

104

Ada alat online sederhana yang dapat melakukan ini yang disebut sqlizer.io .

Tangkapan layar dari sqlizer.com

Anda mengunggah file XLSX ke sana, memasukkan nama sheet dan rentang sel, dan itu akan menghasilkan pernyataan CREATE TABLE dan sekumpulan pernyataan INSERT untuk mengimpor semua data Anda ke database MySQL.

(Penafian: Saya membantu menjalankan SQLizer)


23
Senang mengetahui alat ini ada, tetapi pikirkan apakah Anda harus menggunakannya atau tidak. Jika spreadsheet Anda berisi data sensitif (mis. Email pengguna, sandi, info cc, info medis, dll), ini mungkin bukan ide yang baik. Situs ini mungkin tidak menyimpan data Anda dan mungkin aman, tetapi tidak ada cara bagi Anda untuk mengetahuinya secara pasti.
Chris Schmitz

1
@DivyeshJesadiya Gratis untuk apa pun hingga 5.000 baris. Setelah itu Anda harus membayar $ 10 untuk satu bulan pemakaian.
d4nt

@doxsi tampaknya baik-baik saja bagi saya, masalah apa yang Anda miliki dengannya?
d4nt

@ChrisSchmitz kami sangat berhati-hati dengan keamanan dan baru-baru ini menulis entri blog tentang cara kami mengoperasikan blog SQLizer.sqlizer.io/posts/privacy-at-sqlizer
a_good_swan

Berhasil, perhatikan format Excel, xlt tidak diterima sedangkan xls diterima.
Emanuel Pirovano

42

Di bawah ini adalah metode lain untuk mengimpor data spreadsheet ke database MySQL yang tidak bergantung pada perangkat lunak tambahan. Anggaplah Anda ingin mengimpor tabel Excel Anda ke dalam salestabel database MySQL bernama mydatabase.

  1. Pilih sel yang relevan:

    masukkan deskripsi gambar di sini

  2. Tempel ke Mr Data Converter dan pilih output sebagai MySQL:

    masukkan deskripsi gambar di sini

  3. Ubah nama tabel dan definisi kolom agar sesuai dengan kebutuhan Anda dalam output yang dihasilkan:

CREATE TABLE sales (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  Country VARCHAR(255),
  Amount INT,
  Qty FLOAT
);
INSERT INTO sales
  (Country,Amount,Qty)
VALUES
  ('America',93,0.60),
  ('Greece',9377,0.80),
  ('Australia',9375,0.80);
  1. Jika Anda menggunakan MySQL Workbench atau sudah masuk mysqldari baris perintah, Anda dapat menjalankan pernyataan SQL yang dihasilkan dari langkah 3 secara langsung. Jika tidak, tempel kode ke dalam file teks (misalnya, import.sql) dan jalankan perintah ini dari shell Unix:

    mysql mydatabase < import.sql

    Cara lain untuk mengimpor dari file SQL dapat ditemukan di jawaban Stack Overflow ini .


1
Ini cara termudah. Terima kasih! Ingatlah untuk menghapus 'ID' Kunci Utama tambahan di SQL, dan tempatkan penambahan AUTO pilihan Anda.
Fandango68

29

Sebenarnya ada beberapa cara untuk mengimpor file excel ke database MySQL dengan tingkat kerumitan dan keberhasilan yang berbeda-beda.

  1. Excel2MySQL . Cara termudah dan tercepat untuk mengimpor data Excel ke MySQL. Ini mendukung semua versi Excel dan tidak memerlukan penginstalan Office.

    tangkapan layar dari Excel2MySQL

  2. LOAD DATA INFILE : Opsi populer ini mungkin yang paling teknis dan membutuhkan pemahaman tentang eksekusi perintah MySQL. Anda harus membuat tabel secara manual sebelum memuat dan menggunakan jenis bidang VARCHAR dengan ukuran yang sesuai. Oleh karena itu, tipe data bidang Anda tidak dioptimalkan. LOAD DATA INFILE mengalami masalah saat mengimpor file besar yang melebihi ukuran 'max_allowed_packet'. Perhatian khusus diperlukan untuk menghindari masalah saat mengimpor karakter khusus dan karakter unicode asing. Berikut adalah contoh terbaru yang saya gunakan untuk mengimpor file csv bernama test.csv.

    masukkan deskripsi gambar di sini

  3. phpMyAdmin : Pilih database Anda terlebih dahulu, lalu pilih tab Impor. phpMyAdmin akan secara otomatis membuat tabel Anda dan mengukur bidang VARCHAR Anda, tetapi itu tidak akan mengoptimalkan jenis bidang. phpMyAdmin mengalami masalah saat mengimpor file besar yang melebihi ukuran 'max_allowed_packet'.

    masukkan deskripsi gambar di sini

  4. MySQL untuk Excel : Ini adalah Add-in Excel gratis dari Oracle. Opsi ini agak membosankan karena menggunakan wizard dan impor lambat dan bermasalah dengan file besar, tetapi ini mungkin opsi yang baik untuk file kecil dengan data VARCHAR. Bidang tidak dioptimalkan.

    masukkan deskripsi gambar di sini


Hai @panofish, saya memiliki excel yang diperbarui setiap hari. Saya ingin meletakkan hanya data yang diperbarui untuk dimasukkan ke tabel database mysql daripada seluruh tabel. (yaitu) letakkan satu baris ke dalam tabel per hari. Bagaimana ini bisa dilakukan?
Arun Raja

Semua solusi ini fokus pada memuat seluruh spreadsheet dan mengganti tabel MySQL Anda atau menambahkan ke tabel. Apakah perubahan menambahkan catatan baru atau mengubah catatan yang sudah ada?
panofish

Mereka hanya menimpa nilai-nilai. Tetapi saya hanya ingin menambahkan nilai-nilai yang belum ada dalam database berdasarkan tanggal. Ini dapat meningkatkan kinerja hanya dengan menambahkan beberapa baris daripada menambahkan banyak baris setiap hari.
Arun Raja

2
Alat Excel2MySQL harus memiliki kemungkinan untuk hanya membuat skrip database :(
joseantgv

PHPMyAdmin adalah yang termudah dan tercepat.
Amir Hajiha

2

Tidak yakin apakah Anda memiliki semua pengaturan ini, tetapi bagi saya, saya menggunakan PHP dan MYSQL. Jadi saya menggunakan kelas PHP PHPExcel. Ini mengambil file dalam hampir semua format, xls, xlsx, cvs, ... dan kemudian memungkinkan Anda membaca dan / atau menyisipkan.

Jadi yang akhirnya saya lakukan adalah memuat excel ke dalam objek phpexcel dan kemudian mengulang melalui semua baris. Berdasarkan apa yang saya inginkan, saya menulis perintah penyisipan SQL sederhana untuk memasukkan data dalam file excel ke tabel saya.

Di bagian depan ini sedikit pekerjaan, tetapi ini hanya masalah mengubah beberapa contoh kode yang ada. Tetapi ketika Anda telah memutar dalam membuat perubahan pada impor itu mudah dan cepat.


1

cara terbaik dan termudah adalah dengan menggunakan aplikasi "MySQL untuk Excel" yang merupakan aplikasi gratis dari oracle. aplikasi ini menambahkan plugin untuk unggul untuk mengekspor dan mengimpor data ke mysql. Anda dapat mendownloadnya dari sini


1

Saat menggunakan file teks untuk mengimpor data, saya mengalami masalah dengan tanda kutip dan bagaimana Excel memformat angka. Misalnya, konfigurasi Excel saya menggunakan koma sebagai pemisah desimal, bukan titik.

Sekarang saya menggunakan Microsoft Access 2010 untuk membuka tabel MySql saya sebagai tabel tertaut. Di sana saya cukup menyalin dan menempelkan sel dari Excel ke Access.

Untuk melakukan ini, pertama instal driver MySql ODBC dan buat koneksi ODBC . Kemudian di akses, di tab "Data Eksternal", buka dialog "Database ODBC" dan tautkan ke tabel mana pun menggunakan koneksi ODBC.

Menggunakan MySql Workbench , Anda juga dapat menyalin dan menempelkan data Excel Anda ke dalam kisi hasil MySql Workbench. Saya memberikan instruksi rinci dalam jawaban ini .



0

Anda dapat menggunakan DocChow , GIU yang sangat intuitif untuk mengimpor Excel ke MySQL, dan gratis di sebagian besar platform umum (termasuk Linux).

Lebih khusus lagi jika Anda khawatir tentang tanggal, tipe data waktu dan waktu, DocChow dengan mudah menangani tipe data. Jika Anda bekerja dengan beberapa spreadsheet Excel yang ingin Anda impor ke dalam satu tabel MySQL DocChow melakukan pekerjaan kotor.


0

Langkah 1 Buat file CSV Anda

Langkah 2 masuk ke server mysql Anda

     mysql -uroot -pyourpassword 

Langkah 3 memuat file csv Anda

     load data local infile '//home/my-sys/my-excel.csv' into table my_tables fields terminated by ',' enclosed by '"' (Country, Amount,Qty);

0

Alat lain yang berguna, dan sebagai pengganti front-end MySQL, adalah Toad untuk MySQL . Sayangnya, tidak lagi didukung oleh Quest , tetapi IDE yang brilian untuk MySQL, dengan wizard IMPOR dan EKSPOR, melayani sebagian besar jenis file.


0

Cara tercepat dan termudah adalah dengan menyimpan XLS sebagai ODS (buka spreasheet dokumen) dan impor dari PhpMyAdmin masukkan deskripsi gambar di sini


0

Jika Anda menggunakan Toad untuk MySQL, langkah-langkah untuk mengimpor file adalah sebagai berikut:

  1. buat tabel di MySQL dengan kolom yang sama dengan file yang akan diimpor.
  2. sekarang tabel dibuat, goto> Tools > Import > Import Wizard
  3. sekarang di kotak dialog import wizard, klik Next.
  4. klik Add File , telusuri dan pilih file yang akan diimpor.
  5. pilih diliminasi yang benar. ("," dipisahkan untuk file .csv)
  6. klik Next, periksa apakah pemetaan sudah dilakukan dengan benar.
  7. klik Berikutnya, pilih tombol radio "Satu tabel yang ada" juga pilih tabel yang akan dipetakan dari menu tarik-turun Tabel.
  8. Klik berikutnya dan selesaikan prosesnya.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.