以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何把access的二进制列快速的传入sql二进制列  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=85331)

--  作者:rjh4078
--  发布时间:2016/5/23 14:22:00
--  如何把access的二进制列快速的传入sql二进制列
如何把access的二进制列快速的传入sql二进制列
--  作者:rjh4078
--  发布时间:2016/5/23 14:25:00
--  

因为许多判断条件 所以没办法用ft的工具直接导入


--  作者:大红袍
--  发布时间:2016/5/23 14:32:00
--  

用sql语句,直接select * f rom {表},然后合成insert 或者 update语句,在sqlserver里面执行。


--  作者:大红袍
--  发布时间:2016/5/23 14:42:00
--  

mark 查询二进制列

 

参考代码

 

Dim conn As New data.Oledb.OleDbConnection(Connections("数据库").ConnectionString)
conn.open()
Dim adoCmd As New Data.OleDB.OleDbCommand("Select  学期,班级,学生编号,学生姓名, 照片  fr om 学生基本信息", conn)

Dim reader As object = adoCmd.ExecuteReader()

Do While reader.Read()
    \'output.show(reader(0))
    \'output.show(reader(1))
    If reader(4).Gettype.Name <> "DBNull" Then
        Dim imageByte() As Byte = reader(4)    \'查询数据,并存入字节数组
        Dim ImageString As String = BitConverter.ToString(imageByte).Replace("-", "")
        output.show("Insert into 表名 (列名) values (0x" + ImageString + ")"  )
    End If
Loop
conn.Close


--  作者:rjh4078
--  发布时间:2016/5/23 15:04:00
--  

reader(4) 这个4表示什么意思?


--  作者:rjh4078
--  发布时间:2016/5/23 15:06:00
--  

---------------------------
版本:2014.11.11.1
---------------------------
代码执行出错,错误信息:

 

System.InvalidCastException: 无法将类型为“System.String”的对象强制转换为类型“System.Byte[]”。

   在 UserCode.Test()
---------------------------
确定  
---------------------------

 

我改了下数据源的名字和表名  执行你这个代码出现这个错误 字段我用* 全查



--  作者:大红袍
--  发布时间:2016/5/23 15:08:00
--  

1、对应获取列数据啊。0、1、2、3、4对应好啊

 

2、只要有二进制列可以用byte()类型接收啊。


--  作者:rjh4078
--  发布时间:2016/5/23 15:11:00
--  

明白


--  作者:rjh4078
--  发布时间:2016/5/23 17:02:00
--  

试了下  可以达到效果 但是速度好慢 20条记录 差不多用了4分钟


--  作者:大红袍
--  发布时间:2016/5/23 17:05:00
--  

1、你文件的大小是不是很大?要读取出来,再插入,肯定会有点耗时的。

 

2、你不要一条一条的插入啊,合成一段一起插入,或者用事务来一次性提交。