Bagaimana cara mengimpor file csv ke meja kerja MySQL?

88

Saya memiliki file CSV. Ini berisi 1,4 juta baris data, jadi saya tidak dapat membuka file csv itu di Excel karena batasnya sekitar 1 juta baris.

Oleh karena itu, saya ingin mengimpor file ini ke meja kerja MySQL. File csv ini berisi kolom seperti

"Service Area Code","Phone Numbers","Preferences","Opstype","Phone Type"

Saya mencoba membuat tabel di meja kerja MySQL bernama "dummy" yang berisi kolom seperti

ServiceAreaCodes,PhoneNumbers,Preferences,Opstyp,PhoneTyp. 

File CSV diberi nama model.csv. Kode saya di meja kerja seperti ini:

LOAD DATA LOCAL INFILE 'model.csv' INTO TABLE test.dummy FIELDS TERMINATED BY ',' lines terminated by '\n';

tapi saya mendapatkan error seperti model.CSV file not found

vps
sumber
Anda juga dapat melakukannya di dbForge Studio untuk wizard impor MySQL . Ini secara otomatis menghasilkan tabel dengan cara seperti itu prnt.sc/e5iqy1
Devart

Jawaban:

139

Saya kira Anda melewatkan klausa TERTUTUP OLEH

LOAD DATA LOCAL INFILE '/path/to/your/csv/file/model.csv'
INTO TABLE test.dummy FIELDS TERMINATED BY ','
ENCLOSED BY '"' LINES TERMINATED BY '\n';

Dan tentukan path lengkap file csv

Load Data Infile - dokumentasi MySQL

Pelacak paket
sumber
1
terima kasih, saya tidak mendapatkan kesalahan dalam perintah ini. tetapi saya mendapatkan kesalahan seperti file model.csv tidak ditemukan. file itu disimpan di desktop sistem saya
vps
File csv disimpan di desktop sistem saya
vps
5
UPDATE: Jika mengimpor string dengan karakter non-standar, sebaiknya tunjukkan kebutuhan "CHARACTER SET utf8" ke pernyataan: LOAD DATA LOCAL INFILE '/path/to/file.csv' INTO TABLE db_name.table_name CHARACTER SET utf8 FIELDS TERMINATED BY ',' ENCLOSED BY '"' diakhiri oleh '\ n'; Tabel / kolom target juga harus disetel ke utf-8
ılǝ
1
juga orang tidak boleh melupakan kata kunci LOKAL, kueri Anda sudah benar
Brij Raj Singh - MSFT
2
Bekerja "kind-of" di windows 7 menggunakan mysql workbench 6.2. Saya harus menggunakan garis miring ganda '//path//to//your//csv//file//model.csv'dan semua bidang yang berisi garis miring putus.
576i
69

Jika Anda memiliki kumpulan data yang lebih kecil, cara untuk mencapainya dengan GUI adalah:

  1. Buka jendela kueri
  2. PILIH * DARI [nama_tabel]
  3. Pilih Impor dari bilah menu
  4. Tekan Apply di kanan bawah di bawah Result Grid

masukkan deskripsi gambar di sini

Referensi: http://www.youtube.com/watch?v=tnhJa_zYNVY

Gabriel Chung
sumber
13
Hanya sebuah CATATAN. Opsi impor itu hanya ada di mesin Windows. Plugin tersebut tampaknya masih berbasis .Net jadi tidak berfungsi di Linux atau Mac.
BrianC
8
Jangan lupa untuk menekan Apply setelah mengimpor.
Steve Pitchers
7
Waspadalah, ini bisa sangat lambat. Butuh beberapa jam hingga 25.000 baris
Rob Sedgwick
2
Lamanya waktu tampaknya sangat bergantung pada perangkat keras. Komputer rumah saya benar-benar tersedak 10 ribu baris. Komputer kantor saya baru saja mengimpor 243K baris dengan sekitar 200 kolom dalam 85 detik.
KathyA.
2
@ BrianC Ini tampaknya tidak lagi menjadi masalah, tampaknya bagi saya pada versi Linux.
Jammerx2
21

Di navigator di bawah SCHEMAS, klik kanan skema / database Anda dan pilih "Wizard Impor Data Tabel"

Bekerja untuk mac juga.

DannyPadilla
sumber
Ini berfungsi untuk saya di Ubuntu 18.04 saat membuat tabel baru dari csv. Namun saya tidak dapat menambahkan data ke tabel yang ada menggunakan metode ini.
LP Whigley
2

Anda dapat menggunakan Wizard Impor Data Tabel MySQL

Shyju M
sumber
Terima kasih :) itu memecahkan masalah saya. kita dapat mengubah nama kolom nanti dari UI (bukan untuk ahli), setelah diimpor ...
vipul kumawat
mencoba banyak hal yang tidak berhasil tetapi akhirnya berhasil. itu bekerja bahkan tanpa mengacaukan pengaturan infile data lokal. Saya menduga MySQL menjalankan sisipan sebagai gantinya.
Peppershaker
1

Saat ini CSV tidak dapat diimpor (menggunakan MySQL Workbench) di semua platform, juga tidak disarankan jika file tersebut tidak berada di host yang sama dengan host server MySQL.

Namun, Anda dapat menggunakan mysqlimport .

Contoh:

mysqlimport --local --compress --user=username --password --host=hostname \
--fields-terminated-by=',' Acme sales.part_*

Dalam contoh ini mysqlimport ini diinstruksikan untuk memuat semua file bernama "penjualan" dengan ekstensi yang dimulai dengan "part_". Ini adalah cara mudah untuk memuat semua file yang dibuat dalam contoh "split". Gunakan opsi --compress untuk meminimalkan lalu lintas jaringan. Opsi --fields-terminated-by = ',' digunakan untuk file CSV dan opsi --local menentukan bahwa data yang masuk terletak di klien. Tanpa opsi --local, MySQL akan mencari data di host database, jadi selalu tentukan opsi --local.

Ada informasi berguna tentang subjek dalam dokumentasi AWS RDS .

Panagiotis Moustafellos
sumber
0

Jika server berada di mesin jarak jauh, pastikan file ada di mesin jarak jauh dan bukan di mesin lokal Anda.

Jika file berada di mesin yang sama dengan server mysql, pastikan pengguna mysql memiliki izin untuk membaca / menulis file, atau salin file ke direktori skema mysql:

Dalam kasus saya di ubuntu itu: /var/lib/mysql/db_myschema/myfile.csv

Juga, tidak terkait dengan masalah ini, tetapi jika Anda memiliki masalah dengan baris baru, gunakan sublimeTEXT untuk mengubah akhir baris ke format WINDOWS, simpan file dan coba lagi.

Eduardo Chongkan
sumber
0

Sepertinya agak rumit karena itu benar-benar mengganggu saya untuk waktu yang lama.

Anda hanya perlu membuka tabel (klik kanan pada "Select Rows- Limit 10000") dan Anda akan membuka jendela baru. Di jendela baru ini, Anda akan menemukan "ikon impor".

Chen
sumber