2012-12-04 60 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 
相关问题