达梦数据库shell脚本怎么获取查询语句结果集

达梦数据库shell脚本怎么获取查询语句结果集,第1张

方式一

当然是windows电脑安装达梦管理工具,直接把脚本贴进去执行,但避免不了出现误 *** 作

在这里插入图片描述

方式二

使用shell脚本执行sql

1. 先找到达梦数据库安装位置吧

[root@localhost ~]# ss -nlp |grep 5236

tcpLISTEN 0 128[::]:5236 [::]:* users:(("dmserver",pid=103380,fd=4))

[root@localhost ~]# ps -ef|grep dmserver

root 85093 66993 0 17:56 pts/600:00:00 grep --color=auto dmserver

dmdba103380 1 8 13:36 ?00:23:18 /home/dmdba/dmdbms/bin/dmserver /home/dmdba/dmdbms/data/DAMENG_JW/dm.ini -noconsole

1

2

3

4

5

1

2

3

4

5

2. 直接在linux上执行shell命令执行sql脚本

2.1 # disql username/password:port

使用这个命令可以进入sql控制台

[root@localhost sql]# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236

服务器[LOCALHOST:5236]:处于普通打开状态

登录使用时间 : 5.524(ms)

disql V8

SQL>

进入SQL>后:

直接输入sql语句,使用英文分号结尾,回车执行。

使用“`sql文件路径”,可以执行sql脚本文件,注意前面有一个小撇(esc和tab中间的键)

使用“start sql文件路径”,可以执行sql脚本文件。

2.2 # disql username/password:port `sql文件位置

使用这个命令可以执行sql脚本

[root@localhost sql]# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236 \`sql/test.sql

[root@localhost sql]#

1

2

1

2

但需注意

这个脚本执行完sql会停留在sql执行行,如需执行完返回到shell命令行,则需要在sql文件结尾添加:exit。

这个shell语句不能用start执行sql文件,只能使用“`”,并且前面需要添加转义字符“\”。

2.3 达梦sql脚本注意事项

目前发现-创建schema语句以及执行过程结尾,都需要添加“/”结束

例如执行以下语句,回车执行,一直在输出数字,直到输入“/”,再回车执行,才执行成功。

[root@localhost sql]# /home/dmdba/dmdbms/bin/disql cpuser/cpuser123:5236

服务器[LOCALHOST:5236]:处于普通打开状态

登录使用时间 : 6.121(ms)

disql V8

SQL>create schema test

2

3 /

*** 作已执行

已用时间: 26.698(毫秒). 执行号:700604.

SQL>

sql脚本示例:

-- 创建schema

CREATE SCHEMA DB_ZFBA_MOBILE

/

-- 执行过程

begin

if exists(select 1 from DBA_TAB_COLUMNS where OWNER='DB_ZFBA_MOBILE' AND TABLE_NAME='T_ZJTQD') then

EXECUTE immediate 'drop table DB_ZFBA_MOBILE.T_ZJTQD'

end if

end

/

create table DB_ZFBA_MOBILE.T_ZJTQD

(

"C_BH"char(32) NOT NULL,-- 主键

"C_BH_AJ" varchar2(32) NULL,-- 案件编号

……

"DT_ZHXGSJ" datetime NULL,-- 最后修改时间

constraint PK_T_ZJTQD primary key( C_BH )

)

sql文件结尾添加exit,保证多个sql文件执行不会中断

3. 编写shell脚本

注意:shell脚本一定在linux中编写,windows编写的有些语句执行不成功(目前原因未知)

例如: a=a b=b c=$a$b echo $c 在windows下编写,linux中执行完会输出b

#!/bin/bash

# 请先配置数据库连接信息,再执行此脚本

DM_PATH=/home/dmdba/dmdbms#达梦数据库的安装位置

USERNAME=cpuser #达梦数据库连接用户名

PASSWORD=cpuser123#达梦数据库连接密码

PORT=5236 #达梦数据库连接端口号

# 下面的信息请不要随意修改

CONNECT_INFO=$USERNAME/$PASSWORD:$PORT

echo "连接信息:"$CONNECT_INFO

# STEP 1

echo "【开始执行】---- sql/02_创建数据库对象/00.CS_GSYS.sql"

$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/00.CS_GSYS.sql >>DB_DM.log

echo "【执行完成】---- sql/02_创建数据库对象/00.CS_GSYS.sql"

# STEP 2

echo "【开始执行】---- sql/02_创建数据库对象/01.CT_GSYS.sql"

$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/01.CT_GSYS.sql >>DB_DM.log

echo "【执行完成】---- sql/02_创建数据库对象/01.CT_GSYS.sql"

# STEP 3

echo "【开始执行】---- sql/02_创建数据库对象/02.CC_GSYS.sql"

$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/02.CC_GSYS.sql >>DB_DM.log

echo "【执行完成】---- sql/02_创建数据库对象/02.CC_GSYS.sql"

# STEP 4

echo "【开始执行】---- sql/02_创建数据库对象/03.CI_GSYS.sql"

$DM_PATH/bin/disql $CONNECT_INFO \`sql/02_创建数据库对象/03.CI_GSYS.sql >>DB_DM.log

echo "【执行完成】---- sql/02_创建数据库对象/03.CI_GSYS.sql"

# STEP 5

echo "【开始执行】---- sql/03_初始化数据/02.I_T_Aty_CodeType_GSYS.sql"

$DM_PATH/bin/disql $CONNECT_INFO \`sql/03_初始化数据/02.I_T_Aty_CodeType_GSYS.sql >>DB_DM.log

echo "【执行完成】---- sql/03_初始化数据/02.I_T_Aty_CodeType_GSYS.sql"

# STEP 6

echo "【开始执行】---- sql/03_初始化数据/02.I_T_Aty_Code_GSYS.sql"

$DM_PATH/bin/disql $CONNECT_INFO \`sql/03_初始化数据/02.I_T_Aty_Code_GSYS.sql >>DB_DM.log

echo "【执行完成】---- sql/03_初始化数据/02.I_T_Aty_Code_GSYS.sql"

# Complete

echo "【SQL全部执行完成】---- 日志请查看DB_DM.log"

执行完成后,通过shell控制台和DB_DM.log日志可以分析sql脚本是否执行成功。

Linux运行sql脚本的具体 *** 作步骤如下:

1、使用shell工具登陆到安装postgresql的服务器,切换到postgres用户,postgresql默认的 *** 作用户,命令是:su - postgres,查看当前路径是/var/lib/psql,创建一个test.sql脚本文件,命令是:vim test.sql。

2、sql脚本内容是:create table test (id int not null primary key,name text)insert into test valus(1, 't1')

3、执行test.sql脚本,命令是:psql -f test.sql

这里是因为postgresql安装本机上,在第一步中我们切换到了postgres用户,因此这里默认就是postgres用户来 *** 作,不用带上用户名和密码。执行结果如下,可以看到有两个提示:

create table

insert 0 1

执行完成后,我们登入数据库,命令是:psql

4、进入psql交互式命令行后,我们执行两个查看命令:\d

可以看到表test确实已经创建成功,然后执行命令:\d test

可以看到表中字段是id和name,和我们创建语句中内容一样,说明第一条语句执行成功。

5、查看表中数据,命令是:select * from test

显示出来的值是1,t1,说明第二条执行语句也执行成功,说明test.sql脚本执行成功。

6、默认是postgres用户,本机 *** 作是,不需要用户和密码,现在我们来试试 *** 作远程linux服务器上的postgresql,也就是说执行本地的脚本文件,在远程服务器上创建表。如下面图中所示,命令是:psql -U test1 -h 192.168.1.194 -f test.sql,输入对应用户的密码。

7、登陆到这个远程服务器上,命令是:psql -U test -h 192.168.194

执行查看命令:\d,\d test

最后查询数据库:select * from test结果和上面都一致。

sql脚本是包含一到多个sql命令的sql语句,我们可以将这些sql脚本放在一个文本文件中(我们称之为“sql脚本文件”),然后通过相关的命令执行这个sql脚本文件。基本步骤如下:

1、创建包含sql命令的sql脚本文件

文件中包含一些列的sql语句,每条语句最后以结尾,文件内容示例如下:

--创建表,使用“--”进行注释

create table 表名称

(

Guid Varchar(38) not null primary key,

Title Varchar(255),

) TYPE=InnoDB

--在表A中增加字段Status

alter table A add Status TinyInt default '0'

--在表A上创建索引

create index XX_TaskId_1 on A(Id_)

--在表A中添加一条记录

Insert into A (Id,ParentId, Name) values(1,0,'名称')

--添加、修改、删除数据后,有可能需要提交事务

Commit

2、执行sql脚本文件

方法一 使用cmd命令执行(windows下,unix或linux在的其控制台下)

【Mysql的bin目录】\mysql –u用户名 –p密码 –D数据库<【sql脚本文件路径全名】,示例:

D:\mysql\bin\mysql –uroot –p123456 -Dtest

注意:

A、如果在sql脚本文件中使用了use 数据库,则-D数据库选项可以忽略

B、如果【Mysql的bin目录】中包含空格,则需要使用“”包含,如:“C:\Program Files\mysql\bin\mysql” –u用户名 –p密码 –D数据库<【sql脚本文件路径全名】

方法二 进入mysql的控制台后,使用source命令执行

Mysql>source 【sql脚本文件的路径全名】


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9419707.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存