Come troncare automaticamente la stringa quando si inserisce in blocco?

.net c# sqlbulkcopy sql-server

Domanda

Voglio inserire molte righe (costruite da oggetti Entity Framework) in SQL Server. Il problema è che alcune proprietà della stringa hanno una lunghezza superiore alla lunghezza della colonna nel database, il che causa un'eccezione e quindi tutte le righe non potranno essere inserite nel database.

Quindi mi chiedo se c'è un modo per dire a SqlBulkCopy di troncare automaticamente qualsiasi file di lunghezza eccessiva? Naturalmente, posso controllare e sottostrare ciascuna proprietà se supera la lunghezza limitata, prima di inserirla in un DataTable, ma rallenterebbe l'intero programma.

Risposta popolare

Utilizza sempre una tabella di staging / carico per azioni collettive.

Quindi è possibile elaborare, pulire, scrubare i dati prima di eseguire il flushing alla tabella reale. Ciò include, LEFT, ricerche, deduplicazioni, ecc

Così:

  1. Carica una tabella di staging con colonne ampie
  2. Flush dalla stadiazione alla tabella "reale" usando INSERT realtable (..) SELECT LEFT(..), .. FROM Staging


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow