| |
VB.NET - FortgeschritteneTabelle von MySQL (BLOB) nach MSSQL (VARBINARY(MAX)) migrieren | | | Autor: WoCo | Datum: 27.12.20 13:14 |
| Guten Tag und Frohe Weihnachten nachträglich zusammen.
Einige Tabellen muss ich von MySQL nach MSSQL migrieren.
Ein Problem habe ich jedoch mit einem BLOB Feld in MySQL welches nach VARBINARY(MAX) im MSSQL migrieren will. Bei einem "Insert INTO ... " kommt die Meldung "Falsche Syntax in der Nähe von "(". ...
Vieleicht hat so etwas jemand schon einmal gemacht und kann mir auf die Sprünge helfen.
Vielen Dank.
' Tabelle aus MySQL einlesen
objMyReader = objMySqlCmd.ExecuteReader()
If objMyReader.HasRows Then
While (objMyReader.Read())
For index As Integer = 0 To objMyReader.FieldCount - 1
Wert = objMyReader(index)
If IsDBNull(Wert) Then
Wert = "NULL"
SQLData += Wert & ", "
ElseIf objMyReader.GetFieldType(index).ToString = "System.Byte[]" _
Then
' BLOB Feld in der MySQL Tabelle
Wert = System.Text.ASCIIEncoding.ASCII.GetString(objMyReader( _
index))
SQLData += "HEXTORAW(" & Chr(39) & Wert & Chr(39) & "), "
Else
SQLData += Chr(39) & Wert & Chr(39) & ", "
End If
Next
SQLData = SQLData.Substring(0, Len(SQLData) - 2)
strSQL = "INSERT INTO " & Tabelle & " ("
strSQL += SQLHeader & ") VALUES ("
strSQL += SQLData & ")"
SQLData = ""
' Tabelle in MSSQL speichern
objSqlCmd = New System.Data.SqlClient.SqlCommand(strSQL, _
mobjSqlConn)
Try
Dim cant As Integer = objSqlCmd.ExecuteNonQuery()
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End While
End If | |
Re: Tabelle von MySQL (BLOB) nach MSSQL (VARBINARY(MAX)) migrieren | | | Autor: effeff | Datum: 28.12.20 13:29 |
| Lass Dir mal vor dem INSERT-Versuch mit "MessageBox.Show(strSQL)" Deine SQL-Syntax anzeigen...
EALA FREYA FRESENA | |
Re: Tabelle von MySQL (BLOB) nach MSSQL (VARBINARY(MAX)) migrieren | | | Autor: WoCo | Datum: 28.12.20 15:11 |
| Vielen Dank für die Antwort.
Für eine MessageBox ist der SQL zu lang.
Deswegen habe ich diesen in eine Datei geschrieben.
Am Ende ist ein Auszug des Insert
Folgendes habe ich nach "Google" gefunden und eingebaut.
Der Feldinhalt der BLOB Feldes über Convert in einen Sting gewandelt.
Dann Diesen String in Byte konvertiert und diesen Dann in HEX gewandelt.
Hiermit konnte ich dann das MySQL BLOB Feld in das VARBinary Feld des MSSQL Server schreiben.
Wert = Convert.ToBase64String(objMyReader(index))
Dim imageBase64 As Byte() = Convert.FromBase64String(Wert)
SQLData += "CAST ((" & Chr(39) & Bytes_To_String(imageBase64) & Chr(39) & ")" & _
"AS VARBINARY), " INSERT INTO bb_bilder ([id], [Bild], [ContentType], [Size], [Bildbeschreibung], [InternerVermerk], [Dateiname], [Id_B], [aktive]) VALUES ('1', CAST (('FFD8FFE00104A4649460110000000 F6D97D13F23FE347DB65F44FC8FF8D4145322C8FFD9') AS VARBINARY), '', '0', '', NULL, 'D:\Foto\image_00090.jpg', '25690', '1')
Den HEX-Wert habe ich hier zur Ansicht gekürzt. Wäre sonst einige Seiten gewesen.
Ich weis noch nicht ob es alles so richtig ist. Ich habe noch das Problem mit dem Auslesen des VarBinary in eine Picturebox.
Bin ich auf dem richtigen Weg?
Danke und Gruß
Beitrag wurde zuletzt am 28.12.20 um 15:16:16 editiert. | |
| 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 |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevCommand 4.0
Professionelle Schaltflächen im modernen Design!
Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Weitere Infos
|
|
|
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
|
|