Très bien, alors cette question semble simple à l'avant. Eh bien, il y a un peu plus que de charger le fichier.
L'histoire entière va comme ceci: Pour une raison quelconque, notre client nous envoie ce qui ne peut être décrit que comme une base de données relationnelle, aplatie, condensée dans un seul fichier CSV (mais le délimiteur est un tilde au lieu d'une virgule). C'est un peu terrible, en fait; Les mêmes données sont répétées AD INFINITUM dans tout le fichier. Ainsi, afin de remettre une certaine commande dans ces données, je le charge dans une base de données relationnelle réelle. En raison du volume de données, le charger dans une base de données facilite l'inspection des données des problèmes. Et cela rend également beaucoup plus facile à exporter.
Il y a 53 rangées par enregistrement et quelque part dans le ballon de 250 000 enregistrements par transmission. Je veux diviser cela en 6 tables normalisées. Je ne sais pas si la validation des données du programme C # ou de l'instance localDB Server 2016 SQL Server que j'utilise.
Je ne suis pas un DBA expérimenté; Je suis un programmeur C # qui a un peu barbouillé dans SQL. Je me sens assez à l'aise avec la syntaxe, mais je veux m'assurer que je fais ce droit.
En outre, tout doit être complètement automatisé. Le fichier est disponible, le programme C # démarre lorsqu'il reçoit un fichier et le charge dans la base de données.
Permettez-moi d'expliquer la mise en page plus. Le fichier est 53 champs, et chaque ligne contient une ligne de détail pour une déclaration (ce qu'elles sont facturées pour, quelle fréquence ils ont été facturés pour l'article, le coût total ou le crédit pour cet article, etc.). Le problème est que chaque ligne a les informations pour un envoi entier, le payeur, le résident, la propriété et le remise. avec celui connu, laissez-moi vous expliquer comment je Je fais ça maintenant:
Ce n'est pas la chose la plus lente du monde, mais tout est complètement fait dans la RAM. Étant donné que le programme se rapproche dangereusement de l'exécution de RAM dans son état actuel, nous avons décidé de charger les données dans une base de données au lieu de tout garder dans la mémoire RAM locale. Espérons que cela verse un peu plus Lumière sur ceci pour les répondeurs potentiels. Je vous remercie!
Vous pouvez probablement prendre ce que Chrissy a fait dans ce script PowerShell pour importer de gros fichiers CSV dans SQL Server , puis le traduisez ensuite en C # ou que le code C # appelle simplement ce script.
Déchargez les données dans une table de mise en scène, puis divisez-vous au besoin. Vous n'éditionez pas que vous devez importer dans plusieurs tables. Je m'attendrais à ce que vous ayez à le faire tout cela de C # puis obtenir les données initiales à SQL Server Table d'abord facilitera la gestion.