vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

ADO.NET / Datenbanken
SQL Befehle im VB Code (Bulk Insert) ausführen 
Autor: Jenpet
Datum: 22.02.13 14:27

Hallo,

ich weiss nicht genau, ob meine Frage hier in das Forum oder für Fortgeschrittene gehört.
Da ich aber noch nicht so lange mit VB arbeite, sondern früher mit C++ gearbeitet hab, frag ich einfach mal hier nach.

Ist es möglich dem Bulk Insert (http://msdn.microsoft.com/en-us/library/ms188365.aspx)
einen Parameter meiner Funktion mitzugeben?
Oder nachträglich einzufügen?

Meine Funktion sieht so aus
    Private Sub createProcedure(ByVal columns As String, ByVal file As String)
        Dim fileInfo As New System.IO.FileInfo(file)
        Dim strSQL As String = "if exists (SELECT * FROM sys.objects WHERE name" & _
          "= '" + procedureName + "')  " _
        + "BEGIN " _
        + "drop procedure " + procedureName + " " _
        + "END "
        Me.executeSQLQuery(strSQL)
        Me.executeSQLQuery("SET QUOTED_IDENTIFIER OFF")
        Me.executeSQLQuery("CREATE PROCEDURE " + procedureName + "" & _
          "@PathFileName varchar(100)" + vbCrLf + "AS" + vbCrLf _
                        & "Set dateformat YMD" + vbCrLf + "DECLARE @SQL varchar(" & _
                        "500) BEGIN Set @SQL = " _
                         & """BULK INSERT " + tempTable + " From" & _
                         "'""+@PathFileName+""' WITH (FIRSTROW = 2, FORMATFILE" & _
                         "= '" + saveFormat + "');"" End EXEC (@SQL) " _
                        & "INSERT stats(" + columns + ") SELECT  SUBSTRING(" + _
                        rows(0) + ",2,DATALENGTH(" + rows(0) + ")-1), " + _
                        columns.Substring(columns.IndexOf(",") + 1) + " FROM " _
                        + tempTable)
    End Sub
Ich importiere die Werte aus meine CSV file (ByVal file As String) in eine Template Tabelle wo die meisten Spalten den Datentyp VARCHAR haben
und füge diese dann in meine richtige Tabelle in die die Daten konvertiert werden.
Das mache ich aus dem Grund, dass die orginalen CSV Dateien nicht angetastet werden und ich keine Schreibrechte in dem Bereich hab wo die Anwendung ausgeführt wird, bzw. keine neue Datei erstellen kann.

Das klappt alles wunderbar und ist extrem schnell, wenn man Millionen von Daten einfügen möchte.

Jedoch fehlt mir in dieser CSV Datei ein Wert der auch in die Spalten eingefügt werden soll.
Und zwar ist das der Name der Datei
Dim fileInfo As New System.IO.FileInfo(file)
fileInfo.Name

Ich muss den Wert auch noch reinbekommen, aber ich schaffe es nicht mein Bulk Insert nachträglich zu verändern.
Ich hole mir alle Daten aus der Datei und was nicht drin ist schaff ich nicht nachträglich einzufügen.

Ich hab versucht diese Zeile zwischen dem Bulk Inser auszuführen
Me.executeSQLQuery("INSERT into stats(FileName) VALUES  ('" + fileInfo.Name + _
  "')")
Aber hier wird einfach einmal eine einzelne Zeile in die Tabelle geschrieben, die überall den Wert NULL hat ausser bei FileName.
Ich brauch aber bei jeder Spalte in der Tabelle am ende in FileName diesen Wert und nicht nur einmal.

Ich hab mir überlegt ob ich nicht mein FormatFile, dass ich dem Bulk Inser mitgebe jedesmal änder und in der letzten Spalte das hier selbst einfüge

31      SQLCHAR 	0     	25     "\"\r\n"		36     	FileName	""
Aber dann bekomme ich immer Fehlermeldungen, weil in der CSV Datei diese Spalte fehlt.

Gibt es eine möglichkeit diese Information noch in den Bulk Inser zu bekommen oder evtl. nachträglich einzufügen, ohne dass der Import plötzlich wieder 90 Minuten statt wie jetzt 10 Minuten dauert?

Danke schon mal im Voraus.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
SQL Befehle im VB Code (Bulk Insert) ausführen3.088Jenpet22.02.13 14:27
Re: SQL Befehle im VB Code (Bulk Insert) ausführen1.226ModeratorDaveS22.02.13 14:44
Re: SQL Befehle im VB Code (Bulk Insert) ausführen1.207Jenpet22.02.13 14:48
Re: SQL Befehle im VB Code (Bulk Insert) ausführen1.158Jenpet27.02.13 15:08

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel