Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Laden Sie Daten aus CSV innerhalb des Bitfelds in mysql

Ich habe endlich die Lösung gefunden und poste sie hier für zukünftige Referenz. Ich habe Hilfe auf der manual page mysql load data .

Also für Testzwecke ist meine Tabellenstruktur:

+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int(11)     | NO   | PRI | NULL    |       |
| nome   | varchar(45) | YES  |     | NULL    |       |
| valore | bit(1)      | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+

Meine csv Testdatei ist:

1,primo_valore,1
2,secondo_valore,0
3,terzo_valore,1

Die Abfrage zum Laden der csv in die Tabelle ist:

 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;

Wie Sie sehen können, laden Sie die csv Sie müssen einen Cast machen cast(@valore as signed) und in Ihrer csv Sie können die Integer-Notation 1 verwenden oder 0 um das bit anzuzeigen Wert. Dies liegt daran, dass BIT-Werte nicht in binärer Notation geladen werden können (z. B. b'011010' ).