以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何将excel表中的数据通过按钮导入到sql数据库表中  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=130973)

--  作者:happyft
--  发布时间:2019/2/13 14:11:00
--  如何将excel表中的数据通过按钮导入到sql数据库表中
有个从其他系统导出来的excel表,有4万行记录,20列,要一次性全部新增导入到sql数据库的临时表中,用sql的数据导入向导是会,现在是要设计在窗口中通过
一个按钮来实现,要怎么写代码才能实现,即通过按钮直接将选择的路径的excel表中这些数据全部新增到sql数据库中
谢谢!

--  作者:有点甜
--  发布时间:2019/2/13 14:22:00
--  

参考

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=9001&skin=0

 

https://blog.csdn.net/u011646279/article/details/80447990

 


--  作者:HappyFt
--  发布时间:2019/2/13 17:33:00
--  
要设置数据库的那两项操作的话,直接将代码写在按钮上,
Dim cmd As New SQLCommand
cmd.ConnectionName = Mydata
cmd.CommandText = "exec sp_configure \'show advanced options\',1" & vbCrlf
cmd.CommandText = cmd.CommandText & "reconfigure" & vbCrlf
cmd.CommandText = cmd.CommandText & "exec sp_configure \'Ad Hoc Distributed Queries\',1" & vbCrlf
cmd.CommandText = cmd.CommandText & "reconfigure"
cmd.ExecuteNonQuery

提示没有权限,要怎么办?

用户没有执行此操作的权限。
您没有运行 RECONFIGURE 语句的权限。
用户没有执行此操作的权限。
您没有运行 RECONFIGURE 语句的权限。

那是不是普通的用户就不能用了?

--  作者:有点甜
--  发布时间:2019/2/13 17:37:00
--  

你设置数据源的时候,请用高权限的用户登录;

 

或者,你动态添加一个数据源后(有权限的),再执行语句 http://www.foxtable.com/webhelp/scr/1944.htm

 


--  作者:HappyFt
--  发布时间:2019/2/14 18:53:00
--  
现在改为先将数据复制到项目前台的窗口表中再用sqlbulkcopy来新增到sql数据库中,但有个问题,3到4万行数据,粘贴时很慢,要近十分钟.
通过一个按钮执行SystemReady = False停止代码执行,但此时粘贴就没有执行了,这种情况要如何写代码才能实现粘贴前停止所有代码执行,完成后恢复呢?
谢谢!

--  作者:有点甜
--  发布时间:2019/2/14 19:08:00
--  

为什么要复制粘贴?直接读取excel的内容过来,然后写到sqlserver数据库取不行?

 

 


--  作者:HappyFt
--  发布时间:2019/2/14 21:56:00
--  
那个权限搞不定,sql中是设置了一个AAA的用户开通了如下两个权限,所有人都是以这个帐户登录系统的,

图片点击可在新窗口打开查看此主题相关图片如下:tim截图20190212140524.jpg
图片点击可在新窗口打开查看
要在哪里设置才行?


--  作者:有点甜
--  发布时间:2019/2/14 22:26:00
--  

参考

 

https://www.cnblogs.com/kerrycode/p/5253501.html

 

https://www.baidu.com/baidu?wd=%E6%82%A8%E6%B2%A1%E6%9C%89%E8%BF%90%E8%A1%8C+RECONFIGURE+%E8%AF%AD%E5%8F%A5%E7%9A%84%E6%9D%83%E9%99%90

 


--  作者:HappyFt
--  发布时间:2019/2/15 20:50:00
--  
还是不行,客户端上只有安装excel与项目,没有安装sql2008这样的软件,是要将excel的数据导入到远程的服务器上的sql数据库中,直接在客户项目的窗口按钮上写代码
Dim cmd As New SQLCommand
cmd.ConnectionName = Mydata
\'cmd.CommandText = "USE master" & vbCrlf
\'cmd.CommandText = cmd.CommandText & "GO" & vbCrlf
\'cmd.CommandText = cmd.CommandText & "GRANT ALTER SETTINGS To AAA" & vbCrlf
cmd.CommandText = "exec sp_configure \'show advanced options\',1" & vbCrlf
cmd.CommandText = cmd.CommandText & "reconfigure" & vbCrlf
cmd.CommandText = cmd.CommandText & "exec sp_configure \'Ad Hoc Distributed Queries\',1" & vbCrlf
cmd.CommandText = cmd.CommandText & "reconfigure"
cmd.ExecuteNonQuery

\'---创建链接服务器 
cmd.CommandText = "exec sp_addlinkedserver   \'ITSV\',\'\',\'SQLOLEDB\',\'xxx.gnway.cc,10433\'" & vbCrlf   \'--注意加端口号
cmd.CommandText = cmd.CommandText & "exec sp_addlinkedsrvlogin \'ITSV\',\'false\',null,\'AAA\',\'123456\'" 
cmd.ExecuteNonQuery

cmd.CommandText = "SELECT * into ITSV.ABC.dbo.A2 FROM OPENDATASOURCE(\'Microsoft.ACE.OLEDB.12.0\',\'Data Source=C:\\Users\\Administrator\\Desktop\\A1.xlsx;User ID=Admin;Password=;Extended properties=Excel 12.0\')...[Sheet1$]"
cmd.ExecuteNonQuery
运行就出错,不能创建链接服务器,也提示没有权限,
现在只能将excel表先上传到远程服务器上的某个文件夹下然后直接写储存过程执行时从服务器本地调用那个上传的excel文件就可以,但是这样也很麻烦
如果在服务器上写储存过程能否直接调用远程客户端上的某个文件夹下的excel文件呢?




--  作者:有点蓝
--  发布时间:2019/2/15 21:02:00
--  
您要把execl文件上传到服务器才能使用这个sql导。

如果execl文件是在客户端的,只能读取出来,然后插入到外部表中,类似这种:http://www.foxtable.com/webhelp/scr/2334.htm