Gibt es eine Möglichkeit, SqlBulkCopy zu verwenden, ohne die Daten in eine DataTable zu konvertieren?

8

Gibt es eine Möglichkeit, SqlBulkCopy zu verwenden, ohne die Daten in eine DataTable zu konvertieren? Ich habe eine Liste von Objekten (Liste) im RAM und ich möchte wirklich nicht mehr Speicher verwenden, um die DataTable zu erstellen. Könnte es möglich sein, IDataReader in einer Liste zu implementieren?

Danke!

    
Martin 19.11.2009, 00:41
quelle

4 Antworten

2

Ich würde mir sicherlich vorstellen, dass Sie das könnten. BulkDataReader benötigt Schemainformationen; Deshalb können Sie nicht einfach List angeben. Wenn Sie eine Klasse entwerfen, die IDataReader implementiert, stellen Sie dies in Ihrer GetSchemaTable -Implementierung bereit.

Ich würde einfach ein DataTable selbst erstellen, außer ich könnte ein echtes Speicherproblem demonstrieren, das die Implementierung rechtfertigen würde.

    
Michael Petrotta 19.11.2009 00:52
quelle
1

Wie Michael sagt, können Sie sicherlich einen IDataReader implementieren, der die effizienteste Art ist, dies zu tun, aber es ist etwas zusätzlicher Aufwand erforderlich. Das Implementieren von GetSchemaTable ist ein wenig mühsam zu implementieren, aber es ist nicht so schlimm, wenn Sie den folgenden Code als Ausgangspunkt verwenden.

%Vor%     
Josh 19.11.2009 01:27
quelle
0

Wenn Sie jedes Objekt in ein DataTable verschieben, löschen Sie es aus dem List , und Sie können dann SqlBulkCopy mit nur etwas zusätzlichem Speicher verwenden.

Wenn Sie fertig sind, kehren Sie es um.

Persönlich würde ich einfach ein DataTable erstellen, da Speicher billig ist.

    
James Black 19.11.2009 01:17
quelle
0

Schauen Sie sich diesen Link Ссылка an, Sie können tatsächlich von Ihrer Liste von Objekten oder irgendetwas, das IQQueryable unterstützt, ausgehen eine Projektion, die in einen DataReader konvertiert wird, der an das SqlBulkCopy-Objekt übergeben werden kann.

%Vor%

Ich denke, dass diese Bibliothek nützlich ist, da es Ihnen ein wenig Arbeit erspart.

Ich hoffe, es hilft.

    
FabianVal 09.07.2013 15:05
quelle

Tags und Links