Pourquoi est-ce que mes données soient tronqués? Avertissement | 1265 | de Données pour la colonne tronquée
J'ai essayé d'ajouter de la valeur NULL à la fois date_of_birth et date_of_death, mais cela n'a pas aidé. Pourquoi les données tronqué? (surtout parce qu'il n'y a pas de données pour le moment...)
Aussi, je ne comprends pas d'avertissement de 1261 à tous. La ligne 5 n'est pas différent de lignes 1 à 4.
Merci!
Le script suivant:
-- create the people table
DROP TABLE IF EXISTS people;
CREATE TABLE people (
full_name varchar (50) NOT NULL,
people_ID varchar (15) NOT NULL,
date_of_birth DATE,
date_of_death DATE,
PRIMARY KEY(people_ID))
ENGINE = INNODB;
LOAD DATA LOCAL INFILE "People.csv"
INTO TABLE people
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
Me donne ces erreurs:
Query OK, 5 rows affected, 10 warnings (0.00 sec)
Records: 5 Deleted: 0 Skipped: 0 Warnings: 10
mysql> show warnings;
+---------+------+----------------------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------------------+
| Warning | 1265 | Data truncated for column 'date_of_birth' at row 1 |
| Warning | 1265 | Data truncated for column 'date_of_death' at row 1 |
| Warning | 1265 | Data truncated for column 'date_of_birth' at row 2 |
| Warning | 1265 | Data truncated for column 'date_of_death' at row 2 |
| Warning | 1265 | Data truncated for column 'date_of_birth' at row 3 |
| Warning | 1265 | Data truncated for column 'date_of_death' at row 3 |
| Warning | 1265 | Data truncated for column 'date_of_birth' at row 4 |
| Warning | 1265 | Data truncated for column 'date_of_death' at row 4 |
| Warning | 1265 | Data truncated for column 'date_of_birth' at row 5 |
| Warning | 1261 | Row 5 doesn't contain data for all columns |
+---------+------+----------------------------------------------------+
10 rows in set (0.00 sec)
mysql> select * from people;
+-------------------+-----------+---------------+---------------+
| full_name | people_ID | date_of_birth | date_of_death |
+-------------------+-----------+---------------+---------------+
| Harry Dunham | H_Dunham | 0000-00-00 | NULL |
| Julien Bryan | J_Bryan | 0000-00-00 | 0000-00-00 |
| Jules V.D. Bucher | J_Bucher | 0000-00-00 | 0000-00-00 |
| Miriam Bucher | M_Bucher | 0000-00-00 | 0000-00-00 |
| Paul Bowles | P_Bowles | 0000-00-00 | 0000-00-00 |
+-------------------+-----------+---------------+---------------+
5 rows in set (0.01 sec)
Voici mon .csv:
FullName,People_ID,DOB,DOD
Jules V.D. Bucher,J_Bucher,,
Miriam Bucher,M_Bucher,,
Julien Bryan,J_Bryan,,
Paul Bowles,P_Bowles,,
Harry Dunham,H_Dunham,,
OriginalL'auteur Bleakley | 2015-05-02
Vous devez vous connecter pour publier un commentaire.
Peut-être ce qui se passe, c'est que Mysql est d'essayer de force la chaîne vide
""
dans votre colonne de date, mais la colonne n'accepteDATE
données mises en forme, donc il est converti dans le format adéquat. Essayez de régler votre CSV ainsi, l'une des lignes a"0000-00-00"
dans les colonnes de date au lieu de simplement""
(vide), et voir si vous obtenez moins de mises en garde.La
1261
avertissement ressemble plus à même -- probablement inoffensifs mais ennuyeux bizarreries dans comment Mysql gère l'import CSV -- et je ne serais pas s'inquiéter à ce sujet, sauf si vous voyez la preuve que vos données importées ne sont pas complets.OriginalL'auteur Topher Hunt
Mettre tous ensemble, j'ai deviné que votre fichier CSV contient des DOS de style de fin de ligne (
\r\n
) alors que vous avez demandé à MySQL pour interpréter le fichier à l'aide de style UNIX, les fins de ligne (\n
).Ceux
\r
personnages sont donc traitées comme des données, avec\r
être "tronquée" à néant au cours de la chaîne-de-DATE
de conversion, et avec la dernière rangée, en effet, ne contenant pas de données que ce soit pour cette dernière colonne (parce que vous n'avez pas à écrire une ligne vide à la fin du fichier CSV). C'est ainsi que la ligne finale est différente.Vous pouvez réellement résoudre ce problème en utilisant un plus approprié
LINES TERMINATED BY
de la directive:MySQL permettra à l'
\r\n
séquences pour être traitée comme une fin de ligne.Vous avez un autre problème, qui est que vous dites à MySQL que vos champs sont entourés par des
"
, alors que ce n'est pas du tout le cas. Vous pouvez supprimer leENCLOSED BY
directive, ou faites-la précéder d'ÉVENTUELLEMENT
:Vous devriez lire la documentation pour les technologies que vous utilisez.
Qui dépendra de l'éditeur de texte que vous utilisez. Ou, si vous êtes sous Linux, vous pouvez passer à travers
dos2unix
à partir de la ligne de commande.J'utilise textWrangler sur un mac.
Lire la documentation pour savoir comment configurer les fins de ligne.
Ok. Je vais vérifier ça. Merci!
OriginalL'auteur Lightness Races in Orbit