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.