如何对SQL中的所有数据库执行脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何对SQL中的所有数据库执行脚本相关的知识,希望对你有一定的参考价值。

我有300个数据库,每个数据库都要执行一条Update 的语句,有没有简单的办法,游标可以实现么?请高手具体回答下哦,谢谢了

参考技术A

以sqlserver为例

首先创建一张表

create table database_info
(databasename varchar(50));

然后,将所有数据库名的信息录入到这张表中。这步可参考sqlserver中都有哪些数据库。

然后,执行存储过程:

declare @sql nvarchar(4000),@i int,@maxdatabase
select @maxdatabase=count(*) from database_info
set @i=1
while @i<=@maxdatabase
begin
set @sql='update '
select @sql=sql+datebase_name from database_info where id =@i
select @sql=sql+'.master.dbo.tbl1 set tbl1.aaa=tbl2.bbb from '
select @sql=sql+datebase_name from database_info where id =@i
eselect @sql=sql+'.master.dbo.tbl2 where tbl1.ccc=tbl2.ccc'
exec sp_executesql @sql
set @i=@i+1
end

注意事项:其中update语句,可根据自己的实际需要进行修改。

参考技术B 找一个数据库
建立300个库的链接数据库

然后在你的新数据库里建一张表database_info,把你的库名字datebase_name都记下来,再加个id字段,顺序编号,然后用循环和动态脚本来做重复工作
declare @sql nvarchar(4000),@i int,@maxdatabase
select @maxdatabase=count(*) from database_info
set @i=1
while @i<=@maxdatabase
begin
set @sql='update '
select @sql=sql+datebase_name from database_info where id =@i
select @sql=sql+'.master.dbo.tbl1 set tbl1.aaa=tbl2.bbb from '
select @sql=sql+datebase_name from database_info where id =@i
eselect @sql=sql+'.master.dbo.tbl2 where tbl1.ccc=tbl2.ccc'
exec sp_executesql @sql
set @i=@i+1
end

按这个脚本写,超过300个库的时候,只要维护表database_info,往里面加行就可以了本回答被提问者和网友采纳
参考技术C 回答

mysql数据库执行sql脚本的方法:开启mysql服务(默认是开机时就自动运行了):控制面板-->管理工具-->服务,在里面找到名称为mysql的项,双击就可看它的服务状态是启动还是停止,把它设为启动连接mysql:在命令行下输入 mysql -h localhost -u root -p回车,然后输入密码即可;或直接运行mysql自带的连接工具,然后输入密码即可.1、编写sql脚本,假设内容如下:create database dearabao;use dearabao;create table niuzi (name varchar(20));保存脚本文件,假设我把它保存在F盘的hello world目录下,于是该文件的路径为:F:\\hello world\\niuzi.sql2、执行sql脚本,可以有2种方法:第一种方法:在命令行下(未连接数据库),输入mysql -h localhost -u root -p123456 < F:\\hello world\\niuzi.sql(注意路径不用加引号的!!) 回车即可.第二种方法:在命令行下(已连接数据库,此时的提示符为 mysql> ),输入source F:\\hello world\\niuzi.sql(注意路径不用加引号的) 或者\\. F:\\hello \\niuzi.sql(注意路径不用加引号的) 回车即可

希望我的回答能够帮助到您,祝您好运!

如何对数组php中的所有项目运行sql查询

【中文标题】如何对数组php中的所有项目运行sql查询【英文标题】:how to run an sql query against all items in array php 【发布时间】:2021-02-23 00:12:44 【问题描述】:

我的 PHP 脚本应该从 API 接收不确定数量的 JSON 数据,将其存储在一个数组中,然后对数组中的每个项目运行 SQL 查询。然后将查询作为 JSON 对象返回。

我的 API 如下所示:

if($_POST(['id']))
    $id= $_POST['id'];
    foreach($value as $id)
        $sql = "SELECT id, header, body FROM `messages` WHERE id= $id";
        
        $stmt = $conn->prepare($sql);
        $stmt->bind_param("s", $id);
        $stmt->execute();
        while ($row = mysqli_fetch_assoc($stmt)) 
            $response = $row ['id'];
            $response = $row ['header'];
            $response = $row ['body'];
        
        $stmt->close();
    

    return json_encode($response);

对我来说,这似乎效率很低,必须有一个 SQL 函数来检查数组中的所有变量。

我需要我的 JSON 看起来像这样


    "resoponse": 
        "check": "check"
    ,
    "code": [
            "id": "id",
            "header": "header",
            "body": "body"
        ,
        
            "id": "id",
            "header": "header",
            "body": "body"
        ,
        
            "id": "id",
            "header": "header",
            "body": "body"
        
    ]

我正在使用改造/gson 将 JSON 返回到运行 kotin 的 android 应用程序,所以如果我遗漏了什么,请告诉我。

感谢您的宝贵时间。

【问题讨论】:

如果是 id 的集合,可以使用 where in 子句 【参考方案1】:

此代码可能会对您有所帮助,

$id= $_POST['id'];
$resoponse = array();
$array_push = array();
// foreach($value as $id)
    $sql = "SELECT id, header, body FROM `messages` WHERE id= ?";
    
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("s", $id);
    $stmt->execute();
    while ($row = mysqli_fetch_assoc($stmt)) 
        $response['id'] = $row ['id'];
        $response['header'] = $row ['header'];
        $response['body'] = $row ['body'];
        $array_push[] = $response; 
    
    $stmt->close();
// 

$return = array("resoponse"=>array("check"=>"check"),"code"=>$array_push);

return json_encode($return);

【讨论】:

在开始 foreach 循环之前初始化 array_push 变量 $array_push = array();【参考方案2】:

我真的不知道我在做什么。您要做的就是将 JSON 对象转换为数组并循环遍历数组。

它应该看起来像这样。(这个例子来自 w3 学校)

$jsonobj = '"Peter":35,"Ben":37,"Joe":43';

$arr = json_decode($jsonobj, true);

foreach($arr as $key => $value) 
  echo $key . " => " . $value . "<br>";

https://www.w3schools.com/php/php_json.asp

【讨论】:

以上是关于如何对SQL中的所有数据库执行脚本的主要内容,如果未能解决你的问题,请参考以下文章

Linux数据库:mysql下如何执行sql脚本_第2页

plsql如何执行.sql文件?

mysql命令行工具如何执行脚本文件?

用于迭代服务器的 SQL Server 脚本第 2 部分

如何在Unix中的java中执行sql脚本文件

对于已经执行成功的sql命令,如何回滚