2010-06-11 4 views
16

J'ai créé une base de données et une table. J'ai également créé tous les champs dont j'aurai besoin. J'ai créé 46 champs dont un qui est mon identifiant pour la ligne. Le fichier CSV ne contient pas le champ ID et ne contient pas les en-têtes des colonnes. Je suis nouveau à tout cela mais j'ai essayé de comprendre cela. Je ne suis pas ici paresseux pour demander la réponse, mais je cherche des directions. J'essaye de comprendre comment importer le CSV mais je dois commencer à importer des données commençant au 2ème champ, puisque j'espère que l'auto_increment remplira le champ d'identification, qui est le premier champ que j'ai créé.Importer CSV vers MySQL

J'ai essayé ces instructions sans succès. Quelqu'un peut-il offrir un aperçu?

  1. Les noms de colonnes de votre fichier CSV doivent correspondre à ceux de votre table
  2. Parcourir à votre besoin .csv
  3. Sélectionnez CSV en utilisant les options de données de charge
  4. case à cocher « ON » pour Remplacer le tableau les données de fichier
  5. Dans Fields terminé par boîte, le type ,
  6. En F OMAINES fermée par boîte, "
  7. Dans Les champs échappées par boîte, \
  8. Dans Lignes terminées par boîte, auto
  9. En Les noms des colonnes case, nom de la colonne de type séparé par , comme column1,column2,column3
  10. Case à cocher activée pour Utilisez le mot-clé LOCAL.

Edit:

Le fichier CSV est 32.4kb

La première ligne de mon CSV est:

Test Advertiser,23906032166,119938,287898,,585639051,287898 - Engager - 300x250,88793551,Running,295046551,301624551,2/1/2010,8/2/2010,Active,,Guaranteed,Publisher test,Maintainer test,example-site.com,,All,All,,Interest: Dental; custom geo zones: City,300x250,-,CPM,$37.49 ,"4,415","3,246",3,0,$165.52 ,$121.69 ,"2,895",805,0,0,$30.18 ,$37.49 ,0,$0.00 ,IMPRESSIONBASED,NA,USD 
+0

Avez-vous essayé d'utiliser PHPMyAdmin? –

+2

@Kerry: Il liste les instructions de phpMyAdmin, donc je dirais oui. –

+0

Merci pour la réponse, les instructions que j'ai posté sont ce que j'ai utilisé dans phpMyAdmin mais mes informations sont rejetées. J'ai lu quelque part que la meilleure façon de le faire est d'avoir les en-têtes de colonne sur le csv reflètent les champs dans ma table. est-ce correct? – 404error

Répondre

41

Vous pouvez définir des valeurs MySQL pour certaines colonnes lors de l'importation. Si votre champ id est défini sur l'incrémentation automatique, vous pouvez le définir sur null pendant l'importation et MySQL lui affectera des valeurs incrémentées.Essayez de mettre quelque chose comme ceci dans l'onglet SQL dans phpMyAdmin:

LOAD DATA INFILE 'path/to/file.csv' INTO TABLE your_table FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' SET id=null; 
16

S'il vous plaît consulter cette page et voir si elle a ce que vous êtes à la recherche de. Devrait être tout ce dont vous avez besoin puisque vous avez affaire à une seule table. MYSQL LOAD DATA INFILE

Ainsi, par exemple, vous pourriez faire quelque chose comme ceci:

LOAD DATA INFILE 'filepath' INTO TABLE 'tablename' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (column2, column3, column4); 

Cela devrait vous donner une idée. Il y a bien sûr plus d'options qui peuvent être ajoutées comme vu dans le lien ci-dessus.

+0

Merci, je vais essayer et voir si je peux comprendre. Très apprécié. – 404error

4

assurez-vous d'utiliser LOAD DATA LOCAL INFILE si le fichier d'importation est local. :)

+0

Pas si le fichier est déjà local. L'utilisation de LOCAL peut introduire d'autres problèmes, par ex. "ERROR 1148 (42000): La commande utilisée n'est pas autorisée avec cette version de MySQL", ce qui ne veut pas nécessairement dire l'incompatibilité de la version de MySQL [discussion à ce sujet] (https://dev.mysql.com/doc/refman/5.0/en /loading-tables.html). L'utilisation de LOCAL peut nécessiter la vérification de paramètres supplémentaires, par ex. Du côté client et serveur du drapeau: local-infile. Pour moi, ça ne fonctionnait toujours pas. – Katarzyna