Como importar arquivo CSV para a tabela MySQL

Eu tenho um CSV de diário de eventos não normalizado de um cliente que estou tentando carregar em uma tabela MySQL para que eu possa refatorar para um formato saudável. Criei uma tabela chamada 'CSVImport' que possui um campo para cada coluna do arquivo CSV. O CSV contém 99 colunas, portanto, essa foi uma tarefa bastante difícil:

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

Não há restrições na tabela e todos os campos mantêm valores VARCHAR (256), exceto as colunas que contêm contagens (representadas por INT), sim / não (representadas por BIT), preços (representados por DECIMAL) e anúncios em texto ( representado por TEXT).

Eu tentei carregar dados no arquivo:

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

A mesa inteira está cheia deNULL.

Eu acho que o problema é que os anúncios de texto contêm mais de uma linha, e o MySQL está analisando o arquivo como se cada nova linha correspondesse a uma linha do banco de dados. Eu posso carregar o arquivo no OpenOffice sem problemas.

O arquivo clientdata.csv contém 2593 linhas e 570 registros. A primeira linha contém nomes de colunas. Eu acho que é delimitado por vírgula, e o texto é aparentemente delimitado com aspas duplas.

ATUALIZAR:

Em caso de dúvida, leia o manual:http://dev.mysql.com/doc/refman/5.0/en/load-data.html

Eu adicionei algumas informações aoLOAD DATA declaração de que o OpenOffice era inteligente o suficiente para inferir e agora carrega o número correto de registros:

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;

Mas ainda existem muitos completamenteNULL registros e nenhum dos dados que foram carregados parece estar no lugar certo.

questionAnswers(18)

yourAnswerToTheQuestion