231 votes

Importer un fichier CSV dans le serveur SQL

Je cherche de l'aide pour importer un .csv dans le serveur SQL en utilisant BULK INSERT et j'ai quelques questions de base.

Questions :

  1. Les données du fichier CSV peuvent avoir , (virgule) entre les deux (Ex : description), alors comment puis-je faire l'importation en manipulant ces données ?

  2. Si le client crée le CSV à partir d'Excel, les données comportant des virgules sont incluses dans le fichier. "" (guillemets) [comme dans l'exemple ci-dessous], comment l'importation peut-elle gérer cela ?

  3. Comment savoir si certaines lignes contiennent des données erronées, que l'importation ignore ? (l'importation ignore-t-elle les lignes qui ne sont pas importables ?)

Voici l'exemple de CSV avec l'en-tête :

Name,Class,Subject,ExamDate,Mark,Description
Prabhat,4,Math,2/10/2013,25,Test data for prabhat.
Murari,5,Science,2/11/2013,24,"Test data for his's test, where we can test 2nd ROW, Test."
sanjay,4,Science,,25,Test Only.

Et l'instruction SQL à importer :

BULK INSERT SchoolsTemp
FROM 'C:\CSVData\Schools.csv'
WITH
(
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',  --CSV field delimiter
    ROWTERMINATOR = '\n',   --Use to shift the control to next row
    TABLOCK
)

1 votes

Peut être SSMS : Comment importer (copier/coller) des données depuis Excel ? peut aider (Si vous ne voulez pas utiliser BULK NSERT ou n'ont pas les autorisations pour le faire).

1 votes

Cela n'a rien à voir, mais votre exemple de fichier CSV devrait se charger sans problème dans MS Access.

0voto

A_Moeen Points 9

Je sais qu'il y a des réponses acceptées mais je veux quand même partager mon scénario pour aider quelqu'un à résoudre son problème. OUTILS

  • ASP.NET
  • EF : APPROCHE PRIVILÉGIANT LE CODE
  • SSMS
  • EXCEL

SCÉNARIO Je chargeais un ensemble de données au format CSV qui devait ensuite être affiché dans la vue. J'ai essayé d'utiliser le chargement en masse mais je n'ai pas réussi à charger en tant que BULK LOAD utilisait

FIELDTERMINATOR = ','

et la cellule Excel utilisait également , cependant, je ne pouvais pas non plus utiliser Flat file source directement parce que j'utilisais Code-First Approach et en faisant cela, je n'ai fait qu'un modèle dans la base de données SSMS, pas dans le modèle à partir duquel je devais utiliser les propriétés plus tard.

SOLUTION

  1. J'ai utilisé un fichier plat et créé une table de base de données à partir d'un fichier CSV ( Cliquez avec le bouton droit de la souris sur la base de données dans SSMS -> Import Flat FIle -> sélectionnez le chemin CSV et effectuez tous les réglages comme indiqué. )
  2. Création d'une classe de modèle dans Visual Studio (Vous DEVEZ GARDER tous les types de données et les noms identiques à ceux du fichier CSV chargé dans sql).
  3. utiliser Add-Migration dans la console des paquets NuGet
  4. Mise à jour de la BD

0voto

Denis Points 325

Peut être SSMS : Comment importer (copier/coller) des données depuis Excel ? peut aider (Si vous ne voulez pas utiliser BULK INSERT ou n'ont pas les autorisations pour le faire).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X