2010-11-23 23 views
1

Nous avons un fichier CSV, que nous avons méticuleusement vérifié et dépouillé pour montrer les données dans le format que nous voulons.Meilleure façon de traiter avec csv, pour la préparation de mySql

En tant que tel ce fichier csv est, juste en dessous de 500kb. J'ai converti en sql (sauvé comme txt) espoir que c'est ok.

L'entrée de données de CSV d'origine est de 3 champs, comme ainsi:

Stanley », '7331', 'TAS'

'Gormanston', '7466', 'TAS'

après la conversion de son comme ceci:

INSERT INTO banlieue ('Locality', 'Pcode', 'State') VALUES ('\' \ STANLEY '', '\' 7331 \ '', '\' TAS \ '');

INSERT INTO banlieue ('Locality', 'Pcode', 'State') VALUES ('\' \ Gormanston '', '\' 7466 \ '', '\' TAS \ ''); Ok maintenant, n'étant pas un db officianado, je voudrais savoir. Est-ce que je l'ai converti correctement? Dois-je chercher à rendre ce code plus propre pour l'importation à la db.

Le sql est supérieur à 1,6 Mo pour ce fichier, avec plus de 16 000 entrées, donc je veux être sûr d'avoir fait les choses correctement.

Vive

+1

Vous ne souhaitez probablement pas insérer les guillemets simples dans la base de données autour des valeurs. –

+1

Alors ... personne ne vous a parlé de [LOAD DATA INFILE] (http://dev.mysql.com/doc/refman/5.1/fr/load-data.html), donc vous pouviez charger des données via CSV? –

+0

+1 OMG Les ponies ont sorti les mots de ma bouche et pour démarrer, pas une seule réponse qui le suggère - egads. –

Répondre

2

Comme ce commentaire d'Adam a dit, vous êtes le plus susceptible de ne pas vouloir insérer les citations, que vous faites avec \ « STANLEY \ » etc.

En outre, sur le côté « champ » (locality etc), assurez-vous que ceux-ci sont des ticks de retour (tilde sans décalage), et le côté des données (STANLEY) sont des guillemets simples.

changement:

INSERT INTO suburbs (`Locality`,`Pcode`,'State`) VALUES ('STANLEY','7331','TAS'); 

Autre que cela, je ne vois rien de mal avec elle.

+0

donc: ai-je besoin INSERT INTO banlieue sur chaque ligne: ou que je pensais, banlieue INSERT INTO Valeurs (Localité, pCode, État) Valeurs (bla, blahblah, deeblah); – 422

+0

Eh bien vous pouvez avoir chaque ligne sur leur propre ligne, comme mon exemple montre ... ou vous pouvez utiliser la commande LOAD DATA INFILE si votre csv correspond exactement à la table, OU vous _CAN_ faire plusieurs insertions comme "INSERT INTO suburbs (' a ',' b', 'c') VALEURS ('1', '2', '3'), ('4', '5', '6'), ('7', '8', '9 "Cependant, avec autant de données que vous avez, vous ne serez pas capable de le faire dans la ligne 1 INSERT, vous devrez toujours construire quelques lignes, mais vous pouvez faire jusqu'à 100 insertions par insert dans la ligne ... Je pense que cela a quelque chose à voir avec la longueur de la ligne ... Vous feriez mieux de faire 1 ligne par ligne – superfro

+0

Merci, ouais j'allais en faire une par ligne, mon souci était tampon, car je suis sûr que je lis le plus possible le transfert est 130kb à la fois. Donc, je n'étais pas sûr de la meilleure façon d'importer, normalement je nippe sur phpmyadmin, je crée un db, puis j'importe ... l'inquiétude est de savoir comment un bugger peut être physiquement importé, et je coupe le fichier en 1000 lignes à un temps, et faire 16 importations ... si cela a du sens – 422

1

SQL semble bon, mais ne sera pas le supplément échappé des guillemets simples se retrouvent dans vos dossiers? Je ne suis pas sûr si vous voulez 'STANLEY' ou simplement STANLEY dans vos dossiers, alors je vous laisse le soin de décider.

Vous avez terminé la moitié de votre travail. Vous avez une stratégie d'insertion, avez-vous aussi une stratégie de rollback? Il semble que ce soit une grande migration de données pour vous, si je pourrais si humblement suggérer que vous essayez l'insertion avec juste quelques lignes dans une table indésirable que cela ne vous dérange pas de se débarrasser d'abord. C'est toujours une douleur si les changements doivent être annulés et il n'y a rien en place ou prêt à aller pour réparer les erreurs.

+0

Ouais, pas d'où ils venaient, devinez la conversion de migration de notre csv, en espérant que le 'faisait en effet partie des données qu'il n'est pas. – 422

2

Apparemment, autre que les guillemets échappés. J'utilise cette technique généralement avec un fichier Excel. Où j'ai mes colonnes et puis je crée une formule pour générer les instructions d'insertion appropriées. Alternativement, vous pouvez utiliser quelque chose comme SSIS pour obtenir vos données dans votre base de données.

+0

Merci, j'allais juste plonk le lot dans le mysql via phpmyadmin – 422