Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Massenimport bzw INSERT mit MSSQL 2008

Frage Entwicklung Datenbanken

Mitglied: nicro87

nicro87 (Level 1) - Jetzt verbinden

08.02.2012, aktualisiert 18:35 Uhr, 3414 Aufrufe, 6 Kommentare

Hallo zusammen,

ich versuche nun seit längerem Massendaten aus DBF-Dateien auszulesen und in eine MS SQL-Datenbank zu importieren.
Da ich keine SSID-Packete erstellen kann verwende ich dazu C# mit einem BulkInsert. Soweit so gut.

Ich importiere die Daten jedoch nur in eine temporäre Zwischentabelle, welche nach dem import der DBF-Dateien ca. 30 Millionen Datensätze umfasst.
Nun gestaltet sich in Insert in die andere Tabelle mit Indizes und Autowert relativ schwierig, da dieses Kommando so um die 50GB RAM auf unserem Cluster frisst

Deshalb würde ich gerne wissen ob ihr eine Möglichkeit seht diese 30 Millionen Datensätze eleganter und mit weniger Auslastung von der Temp-Tabelle in die Produktiv-Tabelle zu importieren?!

Indizes werden vor dem Insert natürlich ausgeschaltet.

Vielen Dank für Eure Hilfe.

Nicro87
Mitglied: nicro87
14.02.2012 um 08:59 Uhr
Hallo,

weiß niemand eine Lösung?

Gruß
Nico
Bitte warten ..
Mitglied: MadMax
15.02.2012 um 17:10 Uhr
Hallo Nico,

warum muß da überhaupt eine Zwischentabelle her? Importiere doch direkt in die richtige Tabelle.

Ansonsten ist die Frage, wie es eleganter und besser geht, schwer zu beantworten, wenn man nicht genau weiß, was Du machst. Du machst einen Import und der klappt nicht so, wie Du willst, ist ein bisschen vage

Gruß, Mad Max
Bitte warten ..
Mitglied: nicro87
05.03.2012 um 13:23 Uhr
Hallo Mad Max,

die Zwischentabelle halten wir zum einen für Sinnvoll, da in weiteren Bearbeitungsschritten noch Spalten hinzugefügt werden und zum anderen ist so weniger Last auf dem Server, oder nicht?
Ist es überhaupt Sinnvoll zuerst die Indizes auszuschalten und danach wieder einzuschalten? Die CPU-Auslastung geht nämlich stark nach oben, wenn man dies bei knapp 100.000.000 DS tut.

Ich bin auch gerade wieder dabei und lasse Schritt für Schritt über Transaktionen nur wenige Datensätze importieren, dies steigert die Last jedoch auch stark.

Ich denke es sind einfach zu viele Datensätze.

Gruß
Nico
Bitte warten ..
Mitglied: MadMax
06.03.2012 um 00:32 Uhr
Nabend Nico,

da bin ich nicht ganz Deiner Ansicht. Wenn ich erst ein paar Millionen (oben waren es noch 30, jetzt sind es sogar knapp 100) DS per Massenimport in eine Tabelle schiebe und sie dann nochmal woanders hinschiebe, dann habe ich die doppelte Anzahl DS bewegt. Mir fällt kein Grund ein, warum das in irgendeiner Weise effizienter sein soll, als ein einziger Massenimport ohne zusätzliche Datenbewegungen.

Indexe ausschalten kann insofern sinnvoll sein, daß es schneller sein soll, einen Index am Ende komplett am Stück aufzubauen, als ihn während des Insert mitpflegen zu lassen. Wie sich das bei Massenimporten und 30 oder 100 Mio DS auswirkt, kann ich Dir allerdings nicht sagen.

Aber Du solltest mal das Wiederherstellungsmodell Deiner DB anschauen. Wenn das auf "vollständig" steht, solltest Du es vielleicht auf "massenprotokolliert" stellen, damit das Transaktionsprotokoll nicht so voll läuft. Der Kopiervorgang von der temporären zur produktiven Tabelle füllt das TP aber auf jeden Fall.

Am günstigsten kommst Du definitiv weg, wenn Du das massenprotokollierte Wiederherstellungsmodell einstellst und die Daten direkt in die richtige Tabelle importierst. Das mit den Indexen müßte man testen. Auch sollte man schauen, ob irgendwelche Trigger auf der Tabelle liegen und sie ggf. ausschalten. Aufgaben, die im Trigger erledigt werden, können womöglich anschließend am Stück schneller erledigt werden.

Gruß, Mad Max
Bitte warten ..
Mitglied: nicro87
13.03.2012 um 19:42 Uhr
Hallo Mad Max,

das hilft mir schonmal weiter, da ich mich mit dem SQL-Server an sich wirklich wenig auskenne.

Richtig ist, dass ich jeden Monat 25-30 Mio importiere und da wir nun mehrere Monate importiert haben (6 dürfen wir maximal zurückhalten) in der produktiven Tabelle nun an die 100 Mio sind.

Daher war die Überlegung die 30 Mio von der temp. in die produktive zu importieren.

Mittlerweile habe ich auch ein Script welches pro Kundennummer die Datensätze rüberkopiert.
Jedoch bringt das anschalten des Index die CPU-Last dann sehr hoch.

Den Ram-Verbrauch kann man pro Server-Instanz jedoch einstellen (habe ich auch erst vor kurzem gesehen). So kriegt unser Servermanagement nicht direkt nen Alarm und wir sind so auch einigermaßen zufrieden.

Es sind halt wirklich viele Daten und das kann wohl auch so nen kleinen Cluster ins Schwitzen bringen ;) (hehe gut, dass der ne Klimaanlage hat^^)

Mit dem Transaktionsprotokoll ist nen guter Tipp, das werde ich direkt mal probieren...

Vielen Dank ich denke das Thema ist damit gelöst.

Gruß
Nico
Bitte warten ..
Mitglied: MadMax
15.03.2012 um 12:34 Uhr
Moin Nico,

schön, wenn es Dir geholfen hat.

Wenn Dein Problem gelöst ist, kannst Du ja auch das grüne Häkchen setzen

Gruß, Mad Max
Bitte warten ..
Ähnliche Inhalte
Windows Server
Upgrade von MSSQL Server 2008 R2 auf MSSQL Server 2012 schlägt fehl (4)

Frage von Argoadmin zum Thema Windows Server ...

Windows Server
gelöst MSSQL 2016 Express auf Windows Server 2008 R2 Standard? (2)

Frage von TiCar zum Thema Windows Server ...

Windows Server
MSSQL Arbeitsspeicher Auslastung (6)

Frage von Jabberwocky86 zum Thema Windows Server ...

Windows Server
MSSQL Hotfix in Spiegelumgebung

Frage von petere zum Thema Windows Server ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Router & Routing
Allnet - VDSL2 Modem - SFP (mini-GBIC) (20)

Frage von Dobby zum Thema Router & Routing ...

Windows 10
Windows 10 Ordnerfreigabe (18)

Frage von Xaero1982 zum Thema Windows 10 ...

Voice over IP
DeutschlandLAN IP Voice Data M Premium, Erfahrung mit Faxgeräte? (17)

Frage von liquidbase zum Thema Voice over IP ...

Monitoring
Netzwerk-Monitoring Software (17)

Frage von Ghost108 zum Thema Monitoring ...