Date d'importation de csv dans mysql comme 0000-00-00
J'ai des données enregistrées en tant que fichier txt. Je suis d'enregistrer le fichier txt en csv afin de les importer dans une base de données à l'aide de mon sql workbench.
ce que je fais est la suivante:
LOAD DATA LOCAL INFILE '/path/to/csv/file.csv' INTO TABLE mytable FIELDS TERMINATED BY ',' ENCLOSED BY '"' lines terminated by '\n';
Mais un de mes colonne est une date, et il est importé en tant que 0000-00-00
Comment l'importer dans le bon sens ?
Modifier
Voici ce que mon csv contient:
id task hoursWorked begindate enddate
0 task1 15 11/17/2012 11/18/2012
1 task2 20 11/18/2012 11/20/2012
2 task3 20 12/4/2012 12/5/2013
3 task4 22 1/5/2013 1/7/2013
Vous avez omis à la fois le contenu du champ et la définition de la colonne... Pouvez-vous modifier la question et de les fournir?
Pouvez-vous donner un petit extrait de la CSV afin que nous puissions voir le format de la date et aussi le TYPE de la base de données mysql champ que vous souhaitez stocker la date.
question édité
Non valide ou misformatted dates importés comme
Vos champs ne sont pas
Pouvez-vous donner un petit extrait de la CSV afin que nous puissions voir le format de la date et aussi le TYPE de la base de données mysql champ que vous souhaitez stocker la date.
question édité
Non valide ou misformatted dates importés comme
0000-00-00
. Vous pourriez format de votre date de yyyy-mm-dd
pendant LOAD DATA
(ne peut pas vous aider avec cette option). Ou vous pouvez modifier votre fichier csv au format vos dates de séjour avec expression régulière. (Il y a beaucoup d'exemples de ce qui concerne le formatage des dates avec des regex.)Vos champs ne sont pas
TERMINATED BY ','
... 😕OriginalL'auteur b.i | 2013-01-28
Vous devez vous connecter pour publier un commentaire.
S'il vous plaît avoir un essai avec celui-ci:
Pour plus d'info voir CHARGER DES DONNÉES et STR_TO_DATE
Note: j'ai supprimé le
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
partie, parce que je ne les voient,
ni"
dans un fichier CSV. Mais si cela fonctionne bien pour vous la façon dont il est, n'hésitez pas à revenir 🙂Une centaine n'est pas beaucoup, et cela ne devrait pas effectuer trop mauvais. S'il vous plaît avoir un essai.
Aussi, je suis sûr que c'est le meilleur moyen (et le seul, si vous ne voulez pas de désordre dans votre fichier CSV à la main).
+1 C'est la bonne réponse et il a été posté à 15 minutes plus tôt que le mien 🙂
J'ai écrit la requête ci-dessus, mais il me donne une erreur: ou a une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre versions du serveur MySQL pour la bonne syntaxe à utiliser près de 'Lignes' à la ligne 1
OriginalL'auteur fancyPants
Le format de date par défaut est
YYYY-MM-DD
:... donc MySQL refuse de reconnaître des trucs comme
11/17/2012
comme une date correcte.En théorie, vous devriez être en mesure de modifier le format par défaut, mais je ne suis pas sûr que cela peut être fait dans l'étendue de session et je ne vous recommande pas de le changer pour le serveur entier. C'est mieux de faire de la transformation de soi-même.L'astuce consiste à insérer la valeur dans une variable plutôt qu'une colonne.En outre, il y a deux autres questions:
,
.En supposant que votre fichier utilise des onglets séparateurs, la commande serait:
MySQL ne permettant pas réellement de changement
@@date_format
de toute façon:Comme le MySQL 5.6 manuel explique:
Aussi, à Types Date et Heure on peut lire:
OriginalL'auteur Álvaro González