Bonjour,
J'ai un projet console classic et je veux pouvoir enregistrer un fichier .csv dans une base de données sql server mais avec des règles.
Je m'explique :
J'ai un csv dans le quel sur la première ligne il y a les colonnes et sur les lignes du dessous les lignes à enregistrer.
Je souhaite remplir les colonnes de mon Sql Server avec ce fichier en fonction d'un paramètre de ma fonction. C'est à dire que si j'ai "entier" en paramètre, on vide la table et on ajoute les données du csv dans sql server et si j'ai "update" en paramètre alors la on vérifie chaque ligne et si une ligne a ne serait-ce qu'un champs différent alors on met à jour la ligne.
J'ai fais pas mal de recherche et sqlbulkcopy reviens souvent. A savoir je ne dois pas ajouter de dll externe comme csvreader par exemple.
Pour l'instant j'ai quelque chose comme ça mais plein de choses sont à revoir et je suis un peu perdu très honnêtement:
Si quelqu'un a une idée, merci beaucoup !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 public static void insertBdd() { string filename = @"c:\fichier.csv"; SqlConnection conn = new SqlConnection(connectionString); conn.Open(); SqlTransaction transaction = conn.BeginTransaction(); try { using (StreamReader file = new StreamReader(filename)) { SqlBulkCopy copy = new SqlBulkCopy(conn, SqlBulkCopyOptions.KeepIdentity, transaction); copy.DestinationTableName = "temp"; copy.WriteToServer(csv); transaction.Commit(); } } catch (Exception ex) { transaction.Rollback(); } finally { conn.Close(); } }
Partager