场景:
DBA那边给我导出了所有的存储 函数等等对象的创建脚本 有上千个文件
现在需要将这些对象创建脚本导入到另外一个库 如何解决呢?
手动一个个执行显然不太现实
于是手动写了一个批处理 将所有的文件形成一个 SQL的脚本 最后以@生成的 SQL脚本方式导仔派贺入到目标库中
OS环境:WINDOWS xp
脚本内容如下:
@echo off if exist list sql del list sql /q :input cls set input=: set /p input= 请输入要进念派行判断的路径 set "input=%input:"=%" :: 上面这句为判断%input%中是否存在引号 有则剔除 if "%input%"==":" goto input if not exist "%input%" goto input for /f "delims=" %%i in ( dir /b /a d /s "%input%" ) do echo @@%%~fnxi>>list sql if not exist list sql goto no_file start list sql exit :no_file cls echo %cur_dir% 出现错误 未成功生成list sql脚本! pause
使用:
另存为 BAT类型文件后 双击执行
输入你脚本的路径:
如我的E盘CRY文件夹下 有如下类型的文件:
TEST PRC
TEST FNC(有子文件夹 )
TEST VW
执行该批处理后 最后生成的list sql脚本文件内容如下(执行完批处理后会用默认的编辑器自动打开该文件):
@@E:cryTEST PRC
@@E:cry TEST FNC
@@E:cryTEST VW
打开SQLPLUS 以指定用户登录数据库 然后执行: (我的脚本文件羡磨生成在d盘)
@D:list sql
这样所有的对象就会自动在指定用户下生成
lishixin/Article/program/SQLServer/201311/22286
㈡ 如何在一个bat文件中执行多个sql语句
使用批处理bat文件执行多个sql语句的方法:
一、示例表格tt结构如图:
㈢ 我有一堆sql文件需要运行 如何批量运行
可以使用批处理,调用 isql 执行 .sql文件。
1、 新建test.sql 文件。如图,代码执行删除 表a中id='1'的记录。
3、运行批处理test.bat即可执行,test.sql中的SQL语句。
㈣ 在BAT批处理文件中执行SQL脚本文件时怎么判
步培仿困骤:(1) 创建一个批处理文件:打开记事本,创建数据库连接信息(例如,大橘server name,username,password,databasename等)以及要执行的*.sql脚本名称。具体语法参考下文"配念osql 实用工具" 。 将文件的扩展名改为.bat 并保存。
示例1:指定待执行sql 文件的相对路径
osql -S admin\admin -U sa -P sa -d TestDB -i c:\test.sql
pause
示例2: 待执行文件与bat文件在同一个目录,指定相对路径
set localdir=%~dp0
osql -S (local) -U sa -P sa -d Test -i %localdir%\test1.sql
osql -S (local) -U sa -P sa -d Test -i %localdir%\test2.sql
osql -S (local) -U sa -P sa -d Test -i %localdir%\test3.sql
pause
(2) 创建需要执行的sql 脚本, test.sql,test2.sql 和test3.sql, 并放在步骤(1)示例1中指定的位置。本例为c:\ 根目录。如果用示例2,将待执行的sql和bat文件放在同一个目录下。
(3) 双击*.bat 文件并查看运行结果。
㈤ sql数据库 通过批处理.bat来处理执行sql文件
应该还是在双击运行的时候缺少路径所致(python2.7好像也有这个问题)
你试试在批处理中添加一下path变量:
setpath=%path%;x:xxxosql.exe
或者使用osql.exe的时候直接使用全路径:
"x:xxxosql.exe"-h-sxxxxxxx
㈥ 如何利用BAT文件登陆OracleSql并执行多个sql脚本PLSQL语句
首先,做一个简单的sql文件(log.sql)。
在这个SQL文件中我们创建了一个表。
接下来,我们来建一个bat批处理文件(log.bat)。
在这个bat文件里面我们调用绝枣碰对路径的sql文件,并将执行过程及结果输出到log.txt文件中。
最后,我们运行bat文件,执行多个sql脚本plsql语句。
㈦ sql数据库 通过批处理.bat来处理执行sql文件
应该还是在缓颂槐双击运行的时候扰友缺少路径所致(python2.7好像也有这樱敏个问题)
你试试在批处理中添加一下path变量:
setpath=%path%;x:xxxosql.exe
或者使用osql.exe的时候直接使用全路径:
"x:xxxosql.exe"-h-sxxxxxxx
㈧ 如何使用sqlcmd在批处理脚本中执行SQL
使用sqlcmd可以在批处理脚本中执行SQL。虽然这个命令的参数很多,但幸运的是,我们不需要全部理解,在这里简要介绍以下几个:x0dx0a{ -U login_id [ -P password ] } | _E trusted connection }] 如果指定了-E就不需要指定用户名密码,当然指定了用户名密码就不用-E了;x0dx0a-S server_name [ \ instance_name ] 数据库服务器,如果不在本机的话必须指定;x0dx0a-d db_name 数据库名字,必须的;x0dx0a[ -i input_file ] [ -o output_file ] sql存在文件里的话用-i,输出到文件用-o;x0dx0a[ -q "cmdline query" ] [ -Q "cmdline query" and exit ] 输入是简单的sql,不用文件,推荐用-Q,如果你执行完sqlcmd还需要执行别的动作的话;x0dx0a[ -W remove trailing spaces ] 删除多余的空格,结果会更紧凑。x0dx0a当我们在真正的脚本中执行sql时,通常需要传入和输出变量。x0dx0a传入变量比较简单,如下所示:x0dx0asqlcmd -d test -Q "select * from dbo.Investment where investor=$(x)" -v x='IBM' -Wx0dx0a这个语句从test数据库的Investment表中选出investor等于x的所有行,注意到变量x被包含在${}中。x0dx0a然后用-v定义了x的值,'IBM'。x0dx0a-W确定输出的结果不包含多余的空格。x0dx0ax的值如果没有在sqlcmd中设定,系统会试图从别的地方去寻找,可能的地方包括,系统环境变量,用户环境变量,以及用在sqlcmd之前用set设定的变量值。x0dx0a如果你的数据里确实包含${},那么你并不希望进行变量的替换,使用-x选项可以禁止变量的替换。x0dx0a有些时候,你还希望能获得sql执行结果并保存到变量中。比如你们的日志系统每天都在产生日志文件,你要执行一个脚本来处理这些日志文件并存到数据库中。在处理之前,你必须读取数据库以确定上次处理到那一天了。你期望这样能解决你的问题:x0dx0asqlcmd -d test -Q "select ${x}=max(date) from dbo.logDates " -Wx0dx0a但这样并不工作。因为sqlcmd并不提供输出变量。x0dx0a不过你可以这样做:x0dx0asqlcmd -d test -Q "declare @x nvarchar(8);select @x=max(date) from dbo.logDates;print @x; " -Wx0dx0a这样你就可以得到一个干干净净的数字,而不会包含列名和其他信息。x0dx0a接着你将上述结果导入到一个文件里:x0dx0asqlcmd -d test -Q "declare @x nvarchar(8);select @x=max(date) from dbo.logDates;print @x; " -W 1.txtx0dx0a现在到了最关键的一步,将文件的内容写入到变量里:x0dx0aset /P myvar=<1.txtx0dx0a/p表明这个变量myvar的值需要用户输入;x0dx0a<1.txt表明从1.txt中读入而不是从其他地方读入。x0dx0a这样,我们就巧妙的把sql执行的结果写入到变量里了。
㈨ 怎么用批处理*.bat 执行文件目录下面的SQL语句脚本(批量的)
sql脚本应该是你在管理器中导入执行吧
㈩ 我在BAT批处理里面执行SQL,设置变量set /a f=select vcb from XXX
set f=1
set /a f=%f%+1
REM 这时候 %f% 是2
这样轮银才会递增空桐纤。
C:\Windows\system32>set f=1
C:\Windows\斗仿system32>set /a f=%f%+1
2
C:\Windows\system32>set /a f=%f%+1
3
C:\Windows\system32>set ff="select vcb from XXX"
C:\Windows\system32>echo %ff%
"select vcb from XXX"
C:\Windows\system32>