2010-05-12 4 views
1

Je télécharger une grande quantité de données à partir d'un fichier CSV (je le fais via MySQL Workbench):ligne vide dans le tableau après DATA INFILE

LOAD DATA INFILE 'C:/development/mydoc.csv' INTO TABLE mydatabase.mytable CHARACTER SET utf8 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\r'; 

Cependant, je remarque qu'il garde ajouter une ligne vide complète de zéros/zéros après le dernier enregistrement. Je suppose que c'est à cause de la commande "LINES TERMINATED". Cependant, j'ai besoin de cela pour charger les données correctement.

Existe-t-il un moyen de contourner ce/un meilleur SQL pour éviter la ligne vide dans la table?

+0

Qu'entendez-vous par "ajouter une ligne vide"? Est-ce qu'il ajoute une ligne au fichier ou ajoute une ligne à la table? La commande LINES TERMINATED spécifie uniquement la disposition du fichier entrant, elle ne provoque aucune création à ma connaissance. – brydgesk

+0

Vérifiez le fichier CSV pour vous assurer qu'il n'y a pas de lignes vides à la fin du fichier. S'il y avait une ligne vide à la fin, cela pourrait causer cela. –

+0

@brygdesk: la ligne vide est ajoutée à la table. @Ike Walker: Il n'y a pas de lignes vides dans le fichier CSV. C'est quelque chose à voir avec cette commande. – Tom

Répondre

2

Si vous avez un caractère de nouvelle ligne/CR à la FIN de la dernière ligne, la commande de chargement essaiera de charger un autre enregistrement. Mais comme il n'y a pas de données après la dernière ligne/CR, toutes les colonnes sont nulles.

+0

@YJelton: Merci, c'est plus ou moins ce que j'ai compris. Cependant, si je l'enlève, les données ne sont pas entrées dans des rangées, mais plutôt entassées dans une rangée simple d'une manière étrange. Y a-t-il une alternative à la nouvelle ligne? – Tom

+1

Il importe une seule ligne si vous ne supprimez que le caractère * last * newline/CR? Impair. Vous pouvez essayer de créer un fichier avec un délimiteur différent pour les lignes terminées par, comme le caractère pipe (|). – JYelton

+0

C'est une idée, je vais essayer, merci. – Tom