SORU
3 EYLÜL 2010, Cuma


Nasıl CSV dosyası MySQL tablo almak

Etkinlikler-günlük aklı başında bir biçime yeniden Düzenle ben bir MySQL tabloya yüklemeye çalışıyorum bir istemciden CSV normalleştirilmemiş var. Bir tablo 'CSVİmport' CSV dosyasının her sütun için bir alan vardır. denilen yarattım CSV 99 sütun içerir , Bu kendi başına yeterince zor bir görev oldu:

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);

Hiçbir kısıtlamaları masada, ve tüm alanları tutun İKİLİK(256) değerleri dışında, sütunlar içeren sayar (tarafından temsil edilen İNT) Evet/Hayır (tarafından temsil edilen BİT), fiyatlar (temsil ONDALIK), metin diyor (tarafından temsil edilen METİN).

Dosya içine veri yüklemek için denedim:

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               | 
...

Bütün Tablo NULL ile doldurulur.

Sorun diyor metin birden fazla satır içeren olduğunu düşünüyorum, ve MySQL her satırı yeni bir satır databazse karşılık olarak, dosya ayrıştırma. Bir sorun olmadan OpenOffice dosyayı yükleyebilirsiniz.

Bu clientdata.csv dosyası 2593 hatları ve 570 kayıtlarını içerir. İlk satırı sütun adlarını içerir. Ortak sınırlandırılmış olduğunu düşünüyorum, ve metin görünüşe göre doublequote ile sınırlandırılmış.

GÜNCELLEME:

Şüphe, El Kitabı okuduğunuzda: http://dev.mysql.com/doc/refman/5.0/en/load-data.html

OpenOffice anlaması için yeterince akıllı idi, ve şimdi bu kayıtların sayısını doğru olarak yükler LOAD DATA deyimi için bazı bilgiler ekledim:

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;

Ama hala NULL kayıtları tamamen ve doğru yerde gibi görünüyor uçmuş bu verilerin hiçbiri vardır.

CEVAP
12 HAZİRAN 2013, ÇARŞAMBA


Kullanım mysqlimport veritabanına bir tablo yüklemek için:

mysqlimport --ignore-lines=1 \
            --fields-terminated-by=, \
            --local -u root \
            -p Database \
             TableName.csv

http://chriseiffel.com/everything-linux/how-to-import-a-large-csv-file-to-mysql/ birinde buldum

Sınırlayıcı bir sekme için --fields-terminated-by='\t'

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chuck Testa

    Chuck Testa

    14 AĞUSTOS 2011
  • Fuse

    Fuse

    21 Kasım 2005
  • Matthew Pearce

    Matthew Pear

    9 AĞUSTOS 2009