Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Daten aus txt in SqlServer 2005
Mackerlama
myCSharp.de - Member



Dabei seit:
Beiträge: 124
Herkunft: Thüringen

Themenstarter:

Daten aus txt in SqlServer 2005

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Viper78
myCSharp.de - Member



Dabei seit:
Beiträge: 163
Herkunft: Dortmund

beantworten | zitieren | melden

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!
private Nachricht | Beiträge des Benutzers
Mackerlama
myCSharp.de - Member



Dabei seit:
Beiträge: 124
Herkunft: Thüringen

Themenstarter:

beantworten | zitieren | melden

dafür muss vermutlich der Integration Service installiert sein, was nicht der Fall ist.
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 7563
Herkunft: Waidring

beantworten | zitieren | melden

Hallo,
Zitat
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!"
private Nachricht | Beiträge des Benutzers
Mackerlama
myCSharp.de - Member



Dabei seit:
Beiträge: 124
Herkunft: Thüringen

Themenstarter:

beantworten | zitieren | melden

d.h. ich würde dann jeden einzelnen Datensatz bzw. Zeile einfügen?
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 7563
Herkunft: Waidring

beantworten | zitieren | melden

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!"
private Nachricht | Beiträge des Benutzers
Mackerlama
myCSharp.de - Member



Dabei seit:
Beiträge: 124
Herkunft: Thüringen

Themenstarter:

beantworten | zitieren | melden

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"?
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 7563
Herkunft: Waidring

beantworten | zitieren | melden

Hallo,
Zitat
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!"
private Nachricht | Beiträge des Benutzers
Lion1984
myCSharp.de - Member



Dabei seit:
Beiträge: 782
Herkunft: Österreich

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Mackerlama
myCSharp.de - Member



Dabei seit:
Beiträge: 124
Herkunft: Thüringen

Themenstarter:

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 7563
Herkunft: Waidring

beantworten | zitieren | melden

Hallo,
Zitat
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!"
private Nachricht | Beiträge des Benutzers