Mecanismo CSV no servidor MySQL

3

Eu não acho que esta é uma questão de programação, então eu vou perguntar aqui -

Lendo o mysql de alta performance do livro, li sobre o mecanismo CSV. O parágrafo diz:

The CSV engine can treat comma-separated values (CSV) files as table, but it does not support indexes on them. This engine lets you copy files in and out of the database while the server is running. If you export a CSV file from a spreadsheet and save it in the MySQL server's data directory, the server can read it immediately. Similary, if you write data to a CSV table, an external program can read it right away. CSV tables are especially useful as a data interchange format and for certain kinds of logging.

O que eu recebo deste parágrafo é que eu posso copiar um arquivo .CSV para o diretório de dados do banco de dados, e ele deve mostrar como uma tabela que pode ser lida. No entanto, sempre que copio um arquivo .csv de teste para o diretório, ele não aparece como uma tabela. Não consigo acessar.

Estou usando o MySQL 5.5 também

Alguém sabe por que isso não está funcionando ou o que estou fazendo errado?

    
por Jeff 22.11.2011 / 16:40

1 resposta

5

Eu optei por tentar isso no meu servidor MySQL para ver qual era o problema. Parece que você precisa criar a tabela no MySQL (com engine = csv especificado) para que a tabela seja apropriadamente adicionada ao MySQL e ele irá monitorar os metadados do campo da tabela. Nos meus testes, não consegui fazer o MySQL aprender sobre o arquivo csv sem primeiro usar "create table".

Exemplo:

  1. Crie um novo csv chamado foo neste exemplo, uma coluna chamada "i" para um inteiro e "c" para um campo de caractere: %código%
  2. foo.frm, foo.CSM, foo.CSV são criados em / var / lib / mysql / data / dbname, você notará que foo.CSV é zero bytes.
  3. Copie seu csv existente (que corresponde ao formato definido para a tabela) em foo.CSV:

    1,"FOOBAR"
    2,"FOOBAZ"
    3,"BARBAZ"
    
  4. No mysql, selecione * from foo para produzir o seguinte resultado:

    mysql> select * from foo;
    +---+--------+
    | i | c      |
    +---+--------+
    | 1 | FOOBAR |
    | 2 | FOOBAZ |
    | 3 | BARBAZ |
    +---+--------+
    3 rows in set (0.00 sec)
    
por 22.11.2011 / 17:10