2012-11-17 6 views
0

En openoffice calc, j'ouvre un fichier csv téléchargé depuis Internet.Openoffice-calc ne peut pas changer le format de date d'une colonne

L'une des colonnes est pour la date. La date est au format jj/mm/aa. Il est également aligné à gauche (que je pense qu'il est enregistré en tant que texte). Je veux modifier le format de date en aaaa-mm-jj afin que je puisse l'insérer dans une table mysql que j'ai créée et dans laquelle j'ai une colonne avec le type de données date (donc cela nécessite le format que j'ai mentionné précédemment).

Donc, je sélectionne la colonne 'Date' dans openoffice calc et essaie de changer le format de ce qu'il est à celui que je veux. Il ne se passe rien. Aucun changement du tout.

Une suggestion? A quelque chose à faire avec le jeu de caractères ou quelque chose comme ça?

Répondre

1

Vous pouvez simplement utiliser la fonction STR_TO_DATE() de MySQL:

LOAD DATA INFILE '/path/to/file.csv' 
    INTO TABLE my_table 
    CHARACTER SET utf8 
    FIELDS 
    TERMINATED BY ',' 
    OPTIONALLY ENCLOSED BY '"' 
    LINES 
    TERMINATED BY '\r\n' 
    IGNORE 1 LINES 
    (@date, col_a, col_b, etc) 
SET 
    date_col = STR_TO_DATE(@date, '%d/%m/%Y') 
; 
+0

vous m'avez certainement mis sur la bonne voie. mais j'ai toujours des problèmes. mon fichier csv a environ 2000 lignes. il ne traite que la première ligne et ce sont les erreurs que j'obtiens: 'Warning (Code 1265): Données tronquées pour la colonne 'amount_to_vat' à la ligne 1 Erreur (Code 1411): Valeur datetime incorrecte: '19/12/2011 'pour function str_to_date Avertissement (Code 1264): Valeur hors plage pour la colonne 'rid' à la ligne 1'. aussi quel est le @date? aussi la colonne débarrassée est auto-incrémentée et sur le csv il n'y a pas une telle colonne. est-ce un problème? – tioschi

+1

Les chances sont que votre terminaison de ligne est quelque chose d'autre que «\ r \ n''? Peut-être juste "\ n'''? Pas de problème avec 'rid 'absent de CSV (il suffit de l'omettre de la liste des colonnes dans la commande' LOAD DATA'. @ Date' est juste une variable utilisateur dans laquelle la première colonne du CSV dans l'exemple ci-dessus est assignée, pour qu'il puisse ensuite être passé à STR_TO_DATE() 'et finalement utilisé pour définir la colonne' date_col'. – eggyal

+0

vous aviez raison pour le terminateur de ligne.Egalement le str_to_date a résolu le problème.Le seul avertissement qui reste est le suivant: 'Avertissement (Code 1264): Valeur hors plage pour la colonne 'débarrasser' à la ligne 1. Maintenant, il traite toutes les lignes mais il ne peut pas faire l'incrément automatique correct.A la première rangée, il met le nombre le plus élevé qu'il peut obtenir en int – tioschi

2

Si vous sélectionnez une cellule et regardez le contenu des cellules dans la case supérieure « formule » - ça commence par une seule citation? Cela signifie qu'il est importé en tant que texte. Essayez de supprimer la citation, et la date se comporte soudainement comme une date (et utilise vos préférences d'affichage pour cette cellule).

Il est amusant de supprimer ces guillemets à l'aide de la fonction de recherche et de remplacement. Sélectionnez votre colonne, faites une recherche et remplacer, cliquez sur plus d'options, la sélection en cours uniquement, utiliser des expressions régulières:

search ^(.*)$ 
replace & 

à regexp parlent, cela signifie search anything and replace it by itself. dans OO, cela supprime la citation principale.

0

c'est dans le dialogue d'import/d'ouverture, vous devez lui dire que les colonnes sont une date, alors tout fonctionne.

Questions connexes