sql server osql 批量执行sql文件,数据没了

因为分离跟备份都失败,尝试用生成脚本文件的方式备份数据库。
每个数据库表生成一个单独的sql 文件,因此有大量的sql 文件,一个个打开执行,就能达到备份的效果。但是数量太多就尝试用bat文件进行批处理,在网上找到bat如下代码,制作成bat文件后,执行 可以生成相应的表格,但是表格里没有数据。请问如何改才能既生成表格,又保留里面的数据。

@echo off
 
set PARMSER=127.0.0.1
set PARMDB=ODBC_123
set PARMUSRID=sa

set PARMPSW=abcdef
 
echo on
 

del Script_Data_Prepare_%PARMDB%.log
 
echo "--------------------- Creation of Promotion Package Tasks -------------------------" >> Script_Data_Prepare_%PARMDB%.log
echo Starting >> Script_Data_Prepare_%PARMDB%.log
echo ' ' | date/t >> Script_Data_Prepare_%PARMDB%.log
echo ' ' | time/t >> Script_Data_Prepare_%PARMDB%.log
 
echo "---------- dbo.测试.Table.sql-----------" >> Script_Data_Prepare_%PARMDB%.log
osql /U %PARMUSRID% /P %PARMPSW% /S %PARMSER% /D %PARMDB% -w999 /n /i D:\dbo.测试.Table.sql >> Script_Data_Prepare_%PARMDB%.log -w 1000 -x 1000000000

echo "">> Script_Data_Prepare_%PARMDB%.log
 
echo "Program ended at" >> Script_Data_Prepare_%PARMDB%.log
 
echo ' ' | date/t >> Script_Data_Prepare_%PARMDB%.log
echo ' ' | time/t >> Script_Data_Prepare_%PARMDB%.log
 
:endproc

可以用shell命令批量执行文件

#!/bin/bash

#execute all script in specified directory

MYDATE=$(date +%F'-'%T'-'%w)

MYSQL_PATH=/opt/modules/scripts/test_sql #指定的目录

confirm=

db_name=

db_pass=

for file in ${MYSQL_PATH}/*; do

    if [ -f "$file" ]; then

        postfix=$(echo $file | awk -F'.' '{print "."$NF}')

        if [ $postfix = ".sql" ]; then

            if [ ! $db_name ]; then #如果没有指定数据库

                read -p "请输入数据库名:" db_name

                read -p "你输入的数据名是【$db_name】,确认继续请输入--yes--: " confirm

            fi

            if [ "$confirm" = "yes" ] && [ -n $confirm ]; then

                if [ ! $db_pass ]; then #如果没有设置密码

                    stty -echo #密码输入保护关闭显示

                    read -p "请输入数据库密码:" db_pass

                    echo -e "\n"

                    stty echo

                fi

                mysql -uroot -p$db_pass -P3306 --default-character-set=utf8 ${db_name} <$file >&error.log

                echo $file

                echo -e "\n===========$file=============\n" >>${LOG_FILE}

                cat error.log >>${LOG_FILE}   #输出执行日志

                error=$(grep ERROR error.log) #读取错误日志信息

                if [ -n "$error" ]; then #如果有错误就退出程序

                    echo $error

                    exit

                fi

            else

                echo "您已经取消操作!"

                exit

            fi

        fi

    fi

done