Comment importer un très gros fichier csv dans une table SQL Server?
J'ai un très gros fichier csv avec les ~500 colonnes, ~350 k lignes, je suis en train de les importer dans une table SQL Server.
J'ai essayé BULK INSERT
, je reçois - Query executed successfully, 0 rows affected
. Il est intéressant de noter, BULK INSERT
travaillé, dans une affaire de secondes, pour une opération similaire mais pour un plus petit fichier csv, à moins de 50 cols., ~77k lignes.
J'ai aussi essayé de bcp
, je reçois - Unexpected EOF encountered in BCP data-file. BCP copy in failed
.
La tâche est simple - il ne devrait pas être dur à la limite de la pure frustration. Toutes les idées ou suggestions? Tous les autres outils, utilitaires que vous avez utilisé avec succès pour l'accomplissement d'une opération d'importation en bloc ou quelque chose de similaire? Merci.
-- BULK INSERT
USE myDb
BULK INSERT myTable
FROM 'C:\Users\myFile.csv'
WITH
(
FIRSTROW = 2,
-- DATAFILETYPE = 'char',
-- MAXERRORS = 100,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
);
-- bcp
bcp myDb.dbo.myTable in 'C:\Users\myFile.csv' -T -t, -c
Mise à JOUR
J'ai maintenant changé de cap. J'ai décidé de joindre les fichiers csv, ce qui était mon objectif pour commencer avec, à l'extérieur de SQL Server, de sorte que je n'ai pas à télécharger les données d'une table pour l'instant. Cependant, il va être intéressant à essayer de le télécharger (BULK INSERT ou 'bcp') 1 seul enregistrement (~490 cols.) à partir du fichier csv, qui, autrement, a échoué, et voir si cela fonctionne.
BULK INSERT
ou bcp
?Peut-être que le fichier lui-même, il est corrompu/incorrect.
USE myDb BULK INSERT myTable FROM 'C:\Users\myFile.csv' WITH ( FIRSTROW = 2, -- DATAFILETYPE = 'char', -- MAXERRORS = 100, FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' );
mettre dans votre question avec des balises de code de sorte qu'il est lisible s'il vous plaît.
J'ai été de l'édition elle - appuyez sur Entrée par erreur.
OriginalL'auteur Micky Walia | 2011-11-30
Vous devez vous connecter pour publier un commentaire.
Vérifier votre fichier pour un caractère EOF où il ne devrait pas être le cas, le PCA de vous dire il y a un problème avec le fichier.
Notepad ++ peut être en mesure de charger le fichier pour vous permettre de visualiser et de recherche.
OriginalL'auteur Jimbo
Probablement la dernière ligne manque un
\n
. Aussi, il y a une limitation dans la taille de la ligne (8060 octets) dans SQL-Server bien que T-SQL doit avoir le mentionner. Cependant, cochez cette lien:Mon conseil: Commencez avec une ligne et obtenir pour fonctionner. Puis le reste.
OriginalL'auteur alzaimar
Comment êtes-vous mappage des champs dans le fichier avec les colonnes de la table? Le nombre de colonnes dans le tableau, le même que le nombre de champs dans le fichier? Ou êtes-vous en utilisant un format de fichier pour spécifier le mappage de colonne? Si oui, est le format de fichier formaté correctement?
Si vous utilisez le format de fichier et si vous avez le "Nombre de colonnes" paramètre incorrect, il sera la cause de l'erreur "fin de fichier Inattendue". Voir ce pour certains autres erreurs/problèmes avec l'importation groupée.
OriginalL'auteur Dharmendar Kumar 'DK'
Il n'est probablement pas la solution de vos attendez, mais avec Python, vous pouvez créer une table au format csv très facilement (venons de mettre en ligne un 1 go de fichier CSV):
OriginalL'auteur m.swiss