100分求OPENDATASOURCE Excel导入远程sql数据库,邹建等高手请进!!!

wangwanru 2005-08-25 08:33:46
现在的流程是:每一步:上传Excel文件;第二步:把Excel文件导到sql的中间转换表;第三步:从转换表导入表A.Web程序服务器(Server A)和数据库(Server B)没在一台机子上,在本机测试没有问题,可以导入,程序和数据库要是在一台机子上可以实现.如果把文件上传到Server A,无法导入,从网上找了好多也没有找到类似的答案, 如果先把Excel文件上传到Server B又如何实现.
...全文
644 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
ctwd2006 2006-03-30
  • 打赏
  • 举报
回复
收藏
TT008 2006-01-11
  • 打赏
  • 举报
回复
Study
fiele 2005-12-12
  • 打赏
  • 举报
回复
好贴
wangwanru 2005-09-03
  • 打赏
  • 举报
回复
谢谢zjcxc(邹建)
zjcxc 2005-09-01
  • 打赏
  • 举报
回复
服务的启动帐户和SQL Server登录用户/windows登录用户是三个不同的概念.

仔细检查我说的步骤
天地客人 2005-08-31
  • 打赏
  • 举报
回复
新建用户的权限不够
wangwanru 2005-08-31
  • 打赏
  • 举报
回复
已加入了,但还是不行.我干脆用administrator登陆也不行
zjcxc 2005-08-30
  • 打赏
  • 举报
回复
新建用户的权限不够,将其加入administrator组
wangwanru 2005-08-27
  • 打赏
  • 举报
回复
谢谢 zjcxc(邹建) ,我试一下.
zjcxc 2005-08-27
  • 打赏
  • 举报
回复
如果你希望通过设置共享来解决此问题,参考下面的设置备份文件共享目录的方法来解决问题

下面假设A服务器上的数据库备份到B服务器(限两台服务器在同一局域网内,允许目录共享访问)
1.机器A,B创建一个同名的windows用户,用户组设置为administrators,并设置相同的密码,做为备份文件夹文件夹的有效访问用户,操作:
我的电脑
--控制面板
--管理工具
--计算机管理
--用户和组
--右键用户
--新建用户
--建立一个隶属于administrator组的登陆windows的用户

2.在B机器器上,新建一个共享目录,做为备份文件的存放目录,操作:
我的电脑--D:\ 新建一个目录,名为: BAK
--右键这个新建的目录
--属性--共享
--选择"共享该文件夹"
--通过"权限"按纽来设置具体的用户权限,保证第一步中创建的用户具有对该文件夹的所有权限
--确定


3.设置 MSSQLSERVER 及 SQLSERVERAGENT 服务的启动用户
开始--程序--管理工具--服务
--右键 MSSQLSERVER
--属性--登陆--选择"此账户"
--输入或者选择第一步中创建的windows登录用户名
--"密码"中输入该用户的密码
--确定
--同样的方法设置 SQLSERVERAGENT

4.在A机器上完成对B机器BAK目录的映射

5.查询分析器中执行下面的语句,检验是否成功:
exec master..xp_cmdshell 'dir 映射的盘符'
zjcxc 2005-08-27
  • 打赏
  • 举报
回复
关于这个问题,你可以这样解决:

创建DTS包:
可以选择任意一台有需要导入的文件和能连接目标服务器且安装有SQL Server的电脑来完成此工作.
方法一:
1. 运行SQL Server的"导入和导出数据"工具
2. 根据步骤, 设置好从文件导入数据到指定SQL Server的处理
3. 在"保存、调度和复制包"这步,选择"保存DTS包"--"结构化存储文件"
4. 在接下来的步骤中, 输入DTS包的"名称"和保存的文件名

方法二:
企业管理器--数据转换服务--本地包--新建包
在包设计器里按你的需要设置好数据导入处理(一般包含一个源数据连接(例如 excel/text),一个目标数据连接,一个转换数据任务)
设计好包,单击菜单中的"包"--"保存包", 输入"包名称", 在"位置"中选择"结构化存储文件",并且输入包文件名


在要上传数据的文件所在的电脑中, 安装DTSRUN实用工具(可以通过复制SQL Server服务器上的相关文件或者安装sql server客户端获得)
然后在命令提示符下使用DTSRUN执行你的DTS包(也可以在程序中通过shell调用外部命令来调用DTSRUN):
DTSRUN /F "DTS包文件名" /N "DTS包名"

zjcxc 2005-08-27
  • 打赏
  • 举报
回复
凡是使用T-SQL语句实现的操作, 里面涉及到的文件和目录均是相对SQL Server服务器而言,与哪一台客户机发起的操作无关
例如:
c:\a.xls 肯定是指 SQL Server上的 c:\a.xls
\\aa\a\a.xls 肯定是在 SQL Server 服务器上我的电脑中能访问到的 \\aa\a\a.xls

因此, 如果你使用 openrowset 来导入数据,则必须保证你的文件在 SQL Server 服务器,或者该服务器能访问的共享目录中. 否则是肯定不行的.
wangwanru 2005-08-27
  • 打赏
  • 举报
回复
To:zjcxc(邹建)
很抱歉没有及时回复,今天去一个客户那里安装了.
我按着您说的方法去做了,"exec master..xp_cmdshell 'dir 映射的盘符'"执行不成功.而且我的sql的服务不能启动了.如果删除这个用户就可以正常运行了.我试了几回都不成功.
您说的DTS方法导数据行不能因为我这台计算机上没装sql服务端.
winternet 2005-08-26
  • 打赏
  • 举报
回复
用excel VBA实现将某一文件夹下的所有excel文件的sheet导入sql 数据库
http://community.csdn.net/Expert/TopicView3.asp?id=4203451

希望对你有帮助!
wangwanru 2005-08-26
  • 打赏
  • 举报
回复
一晚上了,邹建大哥快来呀!
wangwanru 2005-08-26
  • 打赏
  • 举报
回复
To: bingdian37(冰点) :
用户要保证10 万条数据,这样肯定不行.原先我也是一条条插入的效率太低,而且数据量一大就死机.
wangwanru 2005-08-26
  • 打赏
  • 举报
回复
To netcoder(朱二):
可能是我没有说清楚.
我现在要从web程序通过页面1:上载Excel或Txt文件,
2:然后导入数据到中间表,3:从中间表导入表A,4:在页面上显示刚导入的表A的数据.
由于数据要加判断,必须导入中间表.

导入语句:
Select * Into 中间表 From OPENROWSET
('MICROSOFT.JET.OLEDB.4.0','Excel 8.0;IMEX=1;HDR=YES;DATABASE="+路径+"',sheet1$)
在本机测试没有问题,也就是数据库和程序文件在同一台电脑上可以实现,但要求数据库和程序文件没在一台电脑上提示:OLE DB 提供程序错误

路径:是程序文件所在电脑的路径,要导到另外一台电脑数据库的表A
netcoder 2005-08-26
  • 打赏
  • 举报
回复
你说的每一步都可以实现,希望楼主再把问题说清楚些,这样别人也好帮你
yangfanchuhai 2005-08-26
  • 打赏
  • 举报
回复
小弟建了个数据库群,希望各位高手和初学者踊跃加盟,共同进步
群号:12711621
iwl 2005-08-25
  • 打赏
  • 举报
回复
语法没有问题,向上面说的,可以建立个链结服务器,结果会好一点,远程的话应该没有问题
加载更多回复(4)

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧