Unix 在isql中使用单个脚本的多个sql查询

Unix 在isql中使用单个脚本的多个sql查询,unix,sybase,isql,Unix,Sybase,Isql,我在多个名为1.sql 2.sql等的sql文件中编写了一些DDL查询,其中有1000个文件包含2000多个create table语句 我必须使用unix b ox使用sybase isql 我想准备一个脚本,可以逐个调用这些脚本 怎么做 范例 1.sql have create table命令以go结尾 剧本大师。嘘 它包含 isql-sserver-D数据库密码etc-i1.sql 同样的方法高达1000.sql 请告诉我如何在master中运行。请尝试以下几行。该代码假定所有文件都存在,

我在多个名为1.sql 2.sql等的sql文件中编写了一些DDL查询,其中有1000个文件包含2000多个create table语句

我必须使用unix b ox使用sybase isql

我想准备一个脚本,可以逐个调用这些脚本

怎么做

范例 1.sql have create table命令以go结尾

剧本大师。嘘

它包含 isql-sserver-D数据库密码etc-i1.sql

同样的方法高达1000.sql


请告诉我如何在master中运行。请尝试以下几行。该代码假定所有文件都存在,并且文件名从1到1000,并且所有文件都与master.sh脚本存在于同一目录中。您可以/必须添加其他健全性检查,以检查sql文件是否存在

#!/bin/bash

for i in `seq 1 1000`
do
    isql -S Server -D database password etc -i $i.sql
done

如果您不确定文件的数量,请将所有文件移动到一个目录中,并确保它们具有与“*.sql”相同的扩展名。然后您可以得到一段代码,如下所示:

#!/bin/bash

for fn in `ls -l *.sql | awk '{print $9}' `
do
isql -S ServeName -D DatabaseName -U UserName -P PassWord -i $fn 
done
如果不同文件中的SQL相互独立,即文件534.SQL可能在55.SQL之前运行,您甚至可以尝试

cat *.sql | isql -S Server -D database password etc

不要解析ls的输出,*.sql就可以了。@Kusalananda解析用于从ls-l的输出中过滤出文件名,通常是这样的:-rw-r-r-1 user1 group1 8279 Apr 11 2014 test.log整个反勾位可能被*.sql替换。不需要调用ls和awk。
for (( i = 1; i <= 1000; ++i )); do
      cat $i.sql
done | isql -S Server -D database password etc
cat *.sql | isql -S Server -D database password etc