Laden...

Daten aus txt in SqlServer 2005

Erstellt von Mackerlama vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.210 Views
M
Mackerlama Themenstarter:in
118 Beiträge seit 2008
vor 13 Jahren
Daten aus txt in SqlServer 2005

verwendetes Datenbanksystem: SQL Server 2005

Hallo, ich möchte eine Textdatei regelmäßg in einer Datenbank speichern.

Den Inhalt der Textdatei muss ich modifizieren, daher reicht der Import-Assitent des SS nicht.

Es handelt sich um 30.000 - 50.000 Datensätze à 6 Attribute

Ich möchte gerne eine Stored Procedure für den Import nutzen. (um die Anwendung von der Datenbank zu koppeln) Weiterhin will ich den Insert per Transaktion durchführen.

Mein Problem ist das Vorgehen. Sollte ich ein DataSet mit den verarbeiteten Daten füllen und das einfügen? Oder wäre eine andere Datenstruktur geeigneter? Wenn ja, welche?

Wie man eine SP zum speichern eines DataSets benutzt ist mir auch noch nicht klar.

Schon einmal vielen Dank für eure Hilfe.

V
162 Beiträge seit 2010
vor 13 Jahren

Hi,

versuch das mal im SQL Server Managmement Studio
DB -> Verwaltung -> Legacy -> Data Transformation Services

Die sind genau dafür geschaffen.

MfG
Björn

Das Leben ist schön!

M
Mackerlama Themenstarter:in
118 Beiträge seit 2008
vor 13 Jahren

dafür muss vermutlich der Integration Service installiert sein, was nicht der Fall ist.

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

Sollte ich ein DataSet mit den verarbeiteten Daten füllen und das einfügen? Oder wäre eine andere Datenstruktur geeigneter? Wenn ja, welche?

Wenn du dich mit DataSets gut auskennst verwende diese, kennst du dich mit einem O/R-Mapper aus dann verwende diesen.

Ich würde die *.txt einlesen (File.ReadLines) und dann Objekte erzeugen welche die Daten aus der Datei halten. Diese Objekte modifizieren und dann per Linq2Sql per Stored Procedure an die DB übertragen.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

M
Mackerlama Themenstarter:in
118 Beiträge seit 2008
vor 13 Jahren

d.h. ich würde dann jeden einzelnen Datensatz bzw. Zeile einfügen?

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo Realnub,

das willst du doch erreichen ?(

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

M
Mackerlama Themenstarter:in
118 Beiträge seit 2008
vor 13 Jahren

Ich habe mich unglücklich asugedrückt.

mit diesem Vorgehen würde jeder Datensatz/Zeile einzelnen eingefügt? Ist das nicht nachteilig? Bzw. geht es auch als "Batchjob"?

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

Bzw. geht es auch als "Batchjob"?

Such mal nach BULK INSERT.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

L
770 Beiträge seit 2006
vor 13 Jahren

Mir ist noch immer unklar was du möchtest, möchtest du das TXT vorher in eine Datenbank importieren und dann bearbeiten? Oder möchtest du das TXT vorher, bevor es im SQL Server importiert wird, manipulieren?

Lion

lg Lion

M
Mackerlama Themenstarter:in
118 Beiträge seit 2008
vor 13 Jahren

Ich möchte täglich den Inhalt einer Textdatei in einer Datenbank speichern, wobei dieser vorher Manipuliert wird. (Zusammenfassen von Zeilen, ändern von Werten).

Es läuft nun Alles und ist mehr als zufriedenstellend schnell.

Für die Lösung mittels DataTable habe ich mich entscheiden.

Um das DataTable in die DB zu schieben nutzen ich einen SqlDataAdapter, der ein InsertSqlCommand verpasst bekommen hat. Mit SqlDataAdapter.Update(DataTable) werden die Daten in die Datenbank geschoben. Ist dieser Weg von Hause aus Transaktionssicher oder ist es erforderlich dem SqlCommand eine Transaktion mit zu geben und commit/rollback bswp. in einerm try-catch Block zu machen?

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

Ist dieser Weg von Hause aus Transaktionssicher oder ist es erforderlich dem SqlCommand eine Transaktion mit zu geben und commit/rollback bswp. in einerm try-catch Block zu machen?

Standardmäßig läuft jedes einzelne INSERT in einer Transaktion, daher wäre es durchaus sinnvoll die gesamten INSERTs in einer Transaktion zu klammern so wie du angedacht hast. Schau dir aber trotzdem mal BULK INSERT an - ist noch schneller 😉

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"