1

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

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

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

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

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

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

4

2 回答 2

0

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

其次,我看到购买的软件使用了小的二进制列(在我的软件中,列名是 Timestamp),基本上是在多用户环境中作为保存检查。基本上,软件会在您打开记录时读取值,然后在保存时检查以确保数据库中的值没有更改。如果没有,它会更新。如果是这样,它会显示类似“另一个用户已修改此记录,请重做更改并重试”之类的警告。所以它可能就是这个二进制列。

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

MySQL 中的二进制数据

简单的 MySQL 二进制数据插入

于 2012-12-05T00:29:11.377 回答
0

听起来像是“时间戳”或“行版本”列,用于检测编辑冲突。您可能可以忽略它。

但是,如果您确实想复制它,则需要将二进制文件编码为 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
于 2012-12-05T00:23:59.747 回答