试图从SQL Server 2008二进制类型中提取数据

时间:2012-12-04 23:41:01

标签: mysql vb.net sql-server-2008

我有一台运行Server SQL 2008的计算机。它没有由我设置,它是由我购买的这个软件设置来保存库存。它有一个我想要转移到MYSQL数据库的表(因为我的网站使用mysql - 我想要转移的原因。)

所以我决定使用VB.NET创建一个程序,它从SQL Server 2008读取数据然后插入到MYSQL中的表中。我确保表的设置相同,每列的列和数据类型相同。

我有一张表完全转移。但是,我试图传输这个特定的表,它有一个BINARY(8)类型的列。我应该提一下,当我使用MSSM本身在服务器计算机上进行选择时,它会在二进制(8)列行中显示十六进制值。所以这些值类似于0x3920409F332D234。

所以我显然在MYSQL中设置了一个相同的表,但当我试图将它从服务器sql中拉出并插入到mysql时,它会抛出我的错误(只是这个特定的列。)

在VB.NET中,我尝试在选择数据之后创建一个Byte()数组来检索数据,然后将带有查询语句的数据插入到MYSQL中,但它说“太长了”。我不确定这是否是保存二进制数据的正确变量。

说实话,我不确定我是否会需要这个专栏。我不确定它是什么。但是我需要的大多数表都有这些数据,所以我想保持安全并保留它。

TY

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

首先,您为什么要将数据传输到您的网站数据库?如果您只是将其移动到那里以便可以阅读它并显示值,那么您可以跳过尝试复制该列。简单地说,如果您甚至不知道它是什么,您将如何以及为什么要显示数据?

其次,我见过购买的软件使用了小型二进制列(在我的软件中,列名是Timestamp),基本上是在多用户环境中进行保存检查。基本上,软件在您打开记录时读取值,然后在保存时将检查以确保数据库中的值未更改。如果不是它更新。如果是这样,它会显示一条警告,例如“其他用户修改了此记录,请重做您的更改,然后重试。”所以这可能是所有这个二进制列都是。

但是,如果您仍想复制数据,或至少弄清楚如何使用二进制列,则必须显示一些代码,并且更具体地说明您遇到的错误。或者您可以查看这些资源:

Binary Data in MySQL

simple MySQL binary data inserting