Insertion en bloc avec deux tables liées d'Excel

c# sql sqlbulkcopy

Question

J'ai besoin d'importer des données d'une feuille Excel dans une base de données à l'aide de C # WinForms. Chaque ligne est un "site d'électricité" avec quelques colonnes de données dans le tableau "Sites". Chaque site a également un «contact» avec ses informations (nom, email, téléphone), mais ce contact peut déjà exister ou non dans la base de données. Cette clé primaire de contacts (champ d'identité) est une clé étrangère dans la table Sites, mais la valeur n'est pas connue au moment de l'exécution.

Voici certaines des données pertinentes contenues dans le fichier Excel:

ID du site

Nom du contact

Email

Téléphone

Voici les tableaux:

Contacts
(
    ContactID (identity)
    ContactName
    Email
    Phone 
)

Sites
(
    SiteKey (identity)
    SiteID
    ContactID (foreign key)
)

Si ce nom de contact + email + téléphone n'existe pas déjà dans la table, il doit être créé et cette nouvelle identité doit être insérée dans cette ligne pour Sites (si Contact existe déjà, cet ID contact est requis).

Quelle serait la meilleure façon d’aborder ceci et d’obtenir les résultats les plus rapides. Dans la plupart des cas, plus de 1000 lignes sont dans la feuille Excel.

Réponse populaire

Le moyen le plus simple est probablement de charger en bloc les deux fichiers Excel dans des tables de transfert avec bulkcopy SQL, puis d'utiliser quelques instructions " insert into " qui recherchent la clé étrangère appropriée dans vos tables réelles.

Cependant, comme plus de 1000 lignes ne représentent pas beaucoup (dépendant du + bien sûr), vous pouvez simplement les charger toutes les deux en mémoire et les insérer directement avec les clés appropriées dans votre base de données cible.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi