求教 如何执行.sql文件

gouxiaoyu 2010-05-11 09:11:50
我先采用了这种方式

ado.Execute('Use test');

ado.Execute('EXEC master.dbo.xp_cmdshell ''osql -U 用户名 -P 密码 -i "待执行文件"''');

不过发现了问题,必须在.sql文件内也加上 use test GO 否则无法针对 test数据库 执行该文件

跪求各位更好的办法,拜谢了!
...全文
99 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
gouxiaoyu 2010-05-11
  • 打赏
  • 举报
回复
在此 谢谢各位 特别感谢sz_haitao、liangpei2008、tjianliang

O(∩_∩)O~ 再次感谢
gouxiaoyu 2010-05-11
  • 打赏
  • 举报
回复
ADOConnection.execute(sl.text); //此处的内容不能包含关键字GO


问题解决了 经过各位大大的提点 最后我是这样做的:

先 StringList.LoadFromFile 读取要执行的内容到 sl

sl.Text := stringreplace(sl.Text,'GO',' ',[rfReplaceAll, rfIgnoreCase]);

用ADOConnection.execute(sl.text);

OK!!
liangpei2008 2010-05-11
  • 打赏
  • 举报
回复
3.写成一个存储过程放到Master中,程序先连到Master,做程序的数据库初始化
liangpei2008 2010-05-11
  • 打赏
  • 举报
回复
1.用osql
2.把.sql文件中的语句拆解成N个SQL语句
<像ALTER TABLE\VIEW这样的语句就规定了其上面的语句必须用GO>
亮剑_ 2010-05-11
  • 打赏
  • 举报
回复
LoadFromFile后,Execute前,做一下预处理
gouxiaoyu 2010-05-11
  • 打赏
  • 举报
回复
不能去掉 GO
gouxiaoyu 2010-05-11
  • 打赏
  • 举报
回复
是存在GO 、换行等

我使用 ADOConnection 来execute

先 StringList.LoadFromFile 读取要执行的内容到 sl

用ADOConnection.execute(sl.text);

还是发现问题 因为LoadFromFile sl读取到的内容有变化 出现了 '#$D#$A#9' '#$D#$A'
报错:关键字 'ALTER' 附近有语法错误。.



liangpei2008 2010-05-11
  • 打赏
  • 举报
回复
别试了,.sql中肯定会有GO之类的语句,用ADO执行肯定会出错的!先把GO去掉再说
gouxiaoyu 2010-05-11
  • 打赏
  • 举报
回复
sz_haitao 说的对哦 我试下?
haitao 2010-05-11
  • 打赏
  • 举报
回复
在 待执行文件 前面加入use test;go;

另外,都已经使用ado了,为什么不adoquery1.sql.loadfromfile();再adoquery1.execute;呢?
guanking 2010-05-11
  • 打赏
  • 举报
回复
LZ,在ADO连接中,直接指定TEST数据库。然后运行脚本试试。

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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