Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Carregar dados do CSV dentro do campo de bits no mysql


Finalmente encontrei a solução e estou postando aqui para referência futura. Encontrei ajuda na página de manual de dados de carregamento do mysql .

Então, para fins de teste, minha estrutura de tabela é:
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int(11)     | NO   | PRI | NULL    |       |
| nome   | varchar(45) | YES  |     | NULL    |       |
| valore | bit(1)      | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+

Meu csv arquivo de teste é:
1,primo_valore,1
2,secondo_valore,0
3,terzo_valore,1

A consulta para carregar o csv na tabela é:
 load data infile 'test.csv' into table test
    fields terminated by ',' lines terminated by '\n'
    (id, nome, @valore) set
       valore=cast(@valore as signed);
    show warnings;

Como você pode ver, carregue o csv você precisa fazer um cast cast(@valore as signed) e em seu csv você pode usar a notação de inteiro 1 ou 0 para indicar o bit valor. Isso ocorre porque os valores de BIT não podem ser carregados usando notação binária (por exemplo, b'011010' ).