2012-12-04 91 views
1

我有一臺運行Server SQL 2008的計算機。它不是由我設置的,它是由我爲保持庫存而購買的這個軟件安裝的。它有一張表,我想轉移到MYSQL數據庫(因爲我的網站與MySQL的工作 - 我想做轉移的原因)。試圖從SQL Server 2008中提取數據二進制類型

因此,我決定使用VB.NET從一個程序讀取數據SQL Server 2008然後在MYSQL中插入到表中。我確保表格的設置完全相同,並且每列有相同的柱面和數據類型。

我得到了一張桌子轉移得很好。但是,我試圖轉移這個特定的表,它有一個BINARY(8)類型的列。我應該提到,當我使用MSSM本身在服務器計算機上進行選擇時,它會在二進制(8)列行中顯示十六進制值。所以這些值是類似於0x3920409F332D234。

所以我明明設置了MySQL中的表,該表是相同的,但是當我試圖將其拉出SQL服務器並插入到MySQL,它拋出我的錯誤(就在這個特定的列)。

在VB.NET,我試圖讓一個Byte()數組在選擇數據後檢索數據,然後將這些數據與查詢語句一起插入到MYSQL中,但它說「太長」。我不確定這是否是保存二進制數據的正確變量。

說實話,我不確定我是否會需要這個專欄。我不確定它是什麼。但是我需要的大多數表格都有這些數據,所以我想保持安全並保持它。

TY

+1

什麼是列的名字?你用來閱讀它的代碼是什麼?你用什麼編寫代碼?你得到的錯誤是什麼? –

回答

0

首先,你爲什麼將數據傳輸至您的網站數據庫?如果您只是將它移動到那裏,以便您可以閱讀並顯示值,則可以跳過嘗試複製該列。簡而言之,如果你甚至不知道它是什麼,你將如何以及爲什麼要顯示數據?其次,我已經看到購買的軟件使用了小型二進制列(在我的軟件中,列名是Timestamp),基本上是在多用戶環境中作爲保存檢查。基本上,軟件在打開記錄時讀取值,然後在保存時會檢查數據庫中的值是否未更改。如果沒有更新。如果是這樣,它會顯示一條警告,如「另一位用戶修改了此記錄,請重做您的更改並重試。」所以它可能就是這個二進制列。

但是,如果您仍然想要複製數據,或者至少弄清楚如何使用二進制列,則必須顯示一些代碼,並針對您所得到的錯誤進行更具體的描述。或者你可以在這些資源來看一看:

Binary Data in MySQL

simple MySQL binary data inserting

0

聽起來像「時間戳」或「rowversion」列,它是用來檢測編輯衝突。你可以忽略它。

但是,如果您確實想複製它,則需要將二進制文件編碼爲SQL。我不知道MySQL的語法,但我對SQL Server使用以下方法:

''' <summary>' 
''' Converts binary data to a String for use in an SQLS2005 SQL statement (e.g. "0x000000000000006A")' 
''' </summary>' 
''' <param name="data">Required Byte(). 0-based 1-dimensional array of binary data to convert</param>' 
''' <returns></returns>' 
''' <remarks></remarks>' 
Public Function Byte2SQL(ByVal data() As Byte) As String 
    Dim sbl As New System.Text.StringBuilder("0x") 
    For i As Integer = data.GetLowerBound(0) To data.GetUpperBound(0) 
    sbl.Append(Right("00" & Hex(data(i)), 2)) 
    Next i 
    Return sbl.ToString 
End Function 
相關問題