2010-07-13 8 views
7

J'ai quelques fichiers CSV que je veux charger dans ma base de données, mais le fichier CSV contient beaucoup plus de colonnes que dans ma base de données. Comment puis-je importer uniquement des colonnes sélectionnées du fichier CSV dans ma base de données? Par exemple, disons que le fichier CSV contient une ligne d'en-tête avec les titres de colonne A à Z, puis deux millions de lignes avec des valeurs pour les colonnes A à Z. Supposons que ma table myTest contienne B, N et S, Je veux seulement importer les colonnes B, N et S du fichier CSV dans myTest.MySQL import CSV data - ignore certaines colonnes csv

que je comptais faire:

mysqlimport --local --columns=B,N,S --ignore-lines=1 --delete --default-character-set=latin1 --fields-optionally-enclosed-by=\" --fields-terminated-by=\, --lines-terminated-by=\r\n myDb myTest.csv 

Mais qui remplit la ligne B, N et S avec les valeurs de la colonne A, B et C, non pas avec les valeurs de la colonne B, N et S comme I voulait.

Des suggestions comment je peux le faire importer seulement B, N et S?

Répondre

14

Vous devez modifier le --columns=B,N,S et ajouter des paramètres afin d'ignorer toutes les colonnes dont vous n'avez pas besoin.

Par exemple, afin d'utiliser le 1er, l'utilisation 4e et 7e colonne:

--columns=B,@x,@x,N,@x,@x,S 

Cela envoie la 2e, 3e, 5e et 6e colonne au paramètre @x.

Ref: http://dev.mysql.com/doc/refman/5.1/en/mysqlimport.html

+0

Merci beaucoup, cela a fait l'affaire! J'avais lu ce lien toute la matinée mais je n'avais pas pensé à le faire de cette façon :-) – niklassaers

Questions connexes