Saya memiliki CSV event-diary yang tidak dinormalkan dari klien yang saya coba muat ke dalam tabel MySQL sehingga saya bisa melakukan refactor ke dalam format yang waras. Saya membuat tabel yang disebut 'CSVImport' yang memiliki satu bidang untuk setiap kolom file CSV. CSV berisi 99 kolom, jadi ini tugas yang cukup sulit:
CREATE TABLE 'CSVImport' (id INT);
ALTER TABLE CSVImport ADD COLUMN Title VARCHAR(256);
ALTER TABLE CSVImport ADD COLUMN Company VARCHAR(256);
ALTER TABLE CSVImport ADD COLUMN NumTickets VARCHAR(256);
...
ALTER TABLE CSVImport Date49 ADD COLUMN Date49 VARCHAR(256);
ALTER TABLE CSVImport Date50 ADD COLUMN Date50 VARCHAR(256);
Tidak ada kendala di atas meja, dan semua bidang memiliki nilai VARCHAR (256), kecuali kolom yang berisi jumlah (diwakili oleh INT), ya / tidak (diwakili oleh BIT), harga (diwakili oleh DECIMAL), dan uraian teks ( diwakili oleh TEXT).
Saya mencoba memuat data ke dalam file:
LOAD DATA INFILE '/home/paul/clientdata.csv' INTO TABLE CSVImport;
Query OK, 2023 rows affected, 65535 warnings (0.08 sec)
Records: 2023 Deleted: 0 Skipped: 0 Warnings: 198256
SELECT * FROM CSVImport;
| NULL | NULL | NULL | NULL | NULL |
...
Seluruh meja dipenuhi NULL
.
Saya pikir masalahnya adalah bahwa uraian teks berisi lebih dari satu baris, dan MySQL mem-parsing file seolah-olah setiap baris baru akan sesuai dengan satu baris databazse. Saya dapat memuat file ke OpenOffice tanpa masalah.
File clientdata.csv berisi 2593 baris, dan 570 catatan. Baris pertama berisi nama kolom. Saya pikir itu dibatasi koma, dan teks tampaknya dibatasi dengan doublequote.
MEMPERBARUI:
Jika ragu, baca manual: http://dev.mysql.com/doc/refman/5.0/id/load-data.html
Saya menambahkan beberapa informasi ke LOAD DATA
pernyataan bahwa OpenOffice cukup pintar untuk menyimpulkan, dan sekarang memuat jumlah catatan yang benar:
LOAD DATA INFILE "/home/paul/clientdata.csv"
INTO TABLE CSVImport
COLUMNS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
Tetapi masih ada banyak NULL
catatan yang lengkap , dan tidak ada data yang dimuat tampaknya berada di tempat yang tepat.
sumber
Jawaban:
Inti dari masalah Anda tampaknya cocok dengan kolom dalam file CSV dengan yang ada di tabel.
Banyak klien mySQL grafis memiliki dialog impor yang sangat bagus untuk hal semacam ini.
Favorit saya untuk pekerjaan ini adalah HeidiSQL berbasis Windows . Ini memberi Anda antarmuka grafis untuk membangun
LOAD DATA
perintah; Anda dapat menggunakannya kembali secara terprogram nanti.Cuplikan layar: Dialog "Import textfile"
Untuk membuka dialog Impor textfile ", buka
Tools > Import CSV file
:sumber
Gunakan mysqlimport untuk memuat tabel ke dalam database:
Saya menemukannya di http://chriseiffel.com/everything-linux/how-to-import-a-large-csv-file-to-mysql/
Untuk membuat pembatas tab, gunakan
--fields-terminated-by='\t'
sumber
mysqlimport
menggunakan diLOAD DATA INFILE...
belakang layar, jadi itu hal yang hampir sama.LOAD DATA INFILE
, Anda harus membuat tabel sebelum dapat digunakanmysqlimport
.LOAD DATA INFILE
.--fields-optionally-enclosed-by=\"
dan `--fields-escaped-by = \`Cara paling sederhana yang telah saya impor 200+ baris adalah di bawah perintah di jendela phpmyadmin sql
Saya memiliki tabel sederhana negara dengan dua kolom CountryId, CountryName
di sini adalah data .csv
di sini adalah perintah:
Ingat satu hal, jangan pernah muncul, di kolom kedua, jika tidak impor Anda akan berhenti
sumber
LOAD DATA LOCAL INFILE
. Jika ini melempar kesalahan 1148 "perintah yang digunakan tidak diizinkan", Anda dapat mengaktifkannya dengan menjalankan mysql pada baris perintah dengan--local-infile
.Saya Menggunakan metode ini untuk mengimpor lebih dari 100K catatan ( ~ 5MB ) dalam 0,046detik
Begini cara melakukannya:
Sangat penting untuk memasukkan baris terakhir, jika Anda memiliki lebih dari satu bidang, yaitu biasanya ia melompati bidang terakhir (MySQL 5.6.17)
Kemudian, dengan asumsi Anda memiliki baris pertama sebagai judul untuk bidang Anda, Anda mungkin ingin memasukkan baris ini juga
Ini terlihat seperti jika file Anda memiliki baris tajuk.
sumber
(field_1,field_2 , field_3);
apakah ini merujuk ke daftar kolom dalam file .csv atau dalam tabel? yaitu bidang apa ini?phpMyAdmin dapat menangani impor CSV. Berikut langkah-langkahnya:
Mempersiapkan file CSV untuk memiliki bidang dalam urutan yang sama dengan bidang tabel MySQL.
Hapus baris tajuk dari CSV (jika ada), sehingga hanya data yang ada di file.
Buka antarmuka phpMyAdmin.
Pilih tabel di menu sebelah kiri.
Klik tombol impor di bagian atas.
Jelajahi file CSV.
Pilih opsi "CSV menggunakan LOAD DATA".
Masukkan "," di "bidang yang diakhiri oleh".
Masukkan nama kolom dalam urutan yang sama seperti pada tabel database.
Klik tombol go dan Anda selesai.
Ini adalah catatan yang saya siapkan untuk digunakan di masa depan, dan dibagikan di sini jika orang lain dapat memperoleh manfaat.
sumber
NULL
CSV untuk bidang / kolom yang bertambah secara otomatis.Anda dapat memperbaikinya dengan mencantumkan kolom dalam pernyataan LOAD DATA Anda. Dari manual :
... jadi dalam kasus Anda, Anda perlu mendaftar 99 kolom dalam urutan yang muncul di file csv.
sumber
Coba ini, itu berhasil untuk saya
IGNORE 1 ROWS di sini mengabaikan baris pertama yang berisi nama field. Perhatikan bahwa untuk nama file Anda harus mengetikkan path absolut dari file tersebut.
sumber
Baris perintah mysql rentan terhadap terlalu banyak masalah pada impor. Inilah cara Anda melakukannya:
sumber
Jika Anda menggunakan MySQL Workbench (saat ini versi 6.3) Anda dapat melakukannya dengan:
sumber
LOAD DATA INFILE
danmysqlimport
("ini tidak didukung pada versi mysql ini")INSERT
permintaan besar dan mencoba melakukan semuanya sekaligus, tetapi sepertinya melakukannya dengan cara ini sebenarnya berjalan sekaliINSERT
per baris.Saya melihat sesuatu yang aneh. Anda menggunakan untuk ESCAPING karakter yang sama yang Anda gunakan untuk ENCLOSING. Jadi mesin tidak tahu apa yang harus dilakukan ketika menemukan '' 'dan saya pikir itu sebabnya tidak ada yang tampak di tempat yang tepat. Saya pikir jika Anda menghapus garis ESCAPING, harus berjalan dengan baik. Seperti:
Kecuali Anda menganalisis (secara manual, visual, ...) CSV Anda dan temukan karakter mana yang digunakan untuk melarikan diri. Terkadang '\'. Tetapi jika Anda tidak memilikinya, jangan menggunakannya.
sumber
Namun solusi lain adalah dengan menggunakan alat csvsql dari suite csvkit yang menakjubkan .
Contoh penggunaan:
Alat ini dapat secara otomatis menyimpulkan tipe data (perilaku default), membuat tabel dan memasukkan data ke dalam tabel yang dibuat.
--overwrite
Opsi dapat digunakan untuk menjatuhkan tabel jika sudah ada.--insert
opsi - untuk mengisi tabel dari file.Untuk menginstal suite
Prasyarat:
python-dev
,libmysqlclient-dev
,MySQL-python
sumber
Cara mengimpor file csv ke tabel sql
Contoh file:
Overseas_trade_index
File CSV dataLangkah:
Perlu membuat tabel untuk
overseas_trade_index
.Perlu membuat kolom yang terkait dengan file csv.
Permintaan SQL:
Perlu menghubungkan database mysql di terminal.
Silakan masukkan perintah ini untuk mengimpor data csv ke tabel mysql.
Temukan data indeks perdagangan luar negeri ini di sqldatabase:
sumber
Jika Anda menggunakan mesin windows dengan Excel spreadsheet dimuat, plugin mySql baru ke Excel sangat fenomenal. Orang-orang di Oracle benar-benar melakukan pekerjaan yang baik pada perangkat lunak itu. Anda bisa membuat koneksi database langsung dari Excel. Plugin itu akan menganalisis data Anda, dan mengatur tabel untuk Anda dalam format yang konsisten dengan data. Saya punya beberapa file csv monster data yang besar untuk dikonversi. Alat ini sangat menghemat waktu.
http://dev.mysql.com/downloads/windows/excel/
Anda bisa membuat pembaruan dari dalam Excel yang akan mengisi ke database online. Ini bekerja sangat baik dengan file mySql yang dibuat pada hosting shared GoDaddy yang sangat murah. (Catatan ketika Anda membuat tabel di GoDaddy, Anda harus memilih beberapa pengaturan yang tidak standar untuk mengaktifkan akses situs dari database ...)
Dengan plugin ini Anda memiliki interaktivitas murni antara spreadsheet XL Anda dan penyimpanan data mySql online.
sumber
Saya menggunakan meja kerja mysql untuk melakukan pekerjaan yang sama.
Catatan: lihat file log mysql workbench untuk setiap kesalahan dengan menggunakan "tail -f [mysqlworkbenchpath] /log/wb*.log"
sumber
Berikut ini contoh cuplikan layar file excel:
Simpan sebagai dan pilih .csv.
Dan Anda akan memiliki seperti yang ditunjukkan di bawah ini tangkapan layar data .csv jika Anda membuka menggunakan notepad ++ atau notepad lainnya.
Pastikan Anda menghapus tajuk dan memiliki perataan kolom di .csv seperti pada Tabel mysql. Ganti folder_name dengan nama folder Anda
LOAD DATA LOKAL
INFILI 'D: /folder_name/myfilename.csv' KE mail TABEL BIDANG YANG DIAKHIRI OLEH ',' (fname, lname, email, telepon);
Jika data besar, Anda dapat mengambil kopi dan memuatnya !.
Itu yang kamu butuhkan.
sumber
Seandainya Anda menggunakan Intellij https://www.jetbrains.com/datagrip/features/importexport.html
sumber
Permintaan PHP untuk mengimpor file csv ke database mysql
** Contoh data file CSV **
sumber
sumber