當前位置:首頁 » 數據倉庫 » 達夢資料庫sql語句
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

達夢資料庫sql語句

發布時間: 2023-03-18 23:44:20

『壹』 達夢資料庫shell腳本怎麼獲取查詢語句結果集

方式一

當然是windows電腦安裝達夢管理工具,直接把腳本貼進去執行,但避免不了出現誤操作

在這里插入圖片描述

方式二

使用shell腳本執行sql

1. 先找到達夢資料庫安裝位置吧

[root@localhost ~]# ss -nlp |grep 5236
tcp LISTEN 0 128 [::]:5236 [::]:* users:(("dmserver",pid=103380,fd=4))
[root@localhost ~]# ps -ef|grep dmserver
root 85093 66993 0 17:56 pts/6 00:00:00 grep --color=auto dmserver
dmdba 103380 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腳本是否執行成功。

『貳』 sql2000中可以用這條語句生成一個表: select 姓名,年齡,班級 into 生成的表 from 源表

這是生成表查詢。例如:
select * into new_table from table_name;
達夢資料庫據稱兼容ORACLE PL/SQL常用語法90%,生成表查詢作為最基礎性的SQL語句相信它是支持的可直接使用。

『叄』 達夢資料庫怎麼寫shell腳本,怎麼通過shell腳本調用sql腳本

通過shell腳本調用sql腳本:
1、shell腳本調用sql腳本
#首先編輯sql文件
oracle@SZDB:~> more dept.sql
connect scott/tiger
spool /tmp/dept.lst
set linesize 100 pagesize 80
select * from dept;
spool off;
exit;

#編輯shell腳本文件,在shell腳本內調用sql腳本
oracle@SZDB:~> more get_dept.sh
#!/bin/bash

# set environment variable

if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

export ORACLE_SID=CNMMBO
sqlplus -S /nolog @/users/oracle/dept.sql #注意此處執行sql腳本的方法 -S 表示以靜默方式執行
exit

#授予腳本執行許可權
oracle@SZDB:~> chmod 775 get_dept.sh

-->執行shell腳本
oracle@SZDB:~> ./get_dept.sh

DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON

2、shell腳本調用rman腳本
#首先編輯RMAN腳本
oracle@SZDB:~> more rman.rcv
RUN {
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/users/oracle/bak/%d_%F';
ALLOCATE CHANNEL CH1 TYPE DISK MAXPIECESIZE=4G;
ALLOCATE CHANNEL CH2 TYPE DISK MAXPIECESIZE=4G;
SET LIMIT CHANNEL CH1 READRATE=10240;
SET LIMIT CHANNEL CH1 KBYTES=4096000;
SET LIMIT CHANNEL CH2 READRATE=10240;
SET LIMIT CHANNEL CH2 KBYTES=4096000;
CROSSCHECK ARCHIVELOG ALL;
DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
BACKUP
DATABASE FORMAT '/users/oracle/bak/%d_FULL__%U';
SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
BACKUP ARCHIVELOG ALL FORMAT '/users/oracle/bak/%d_LF_%U' DELETE INPUT;
DELETE NOPROMPT OBSOLETE;
RELEASE CHANNEL CH1;
RELEASE CHANNEL CH2;
}

#編輯shell腳本文件,在shell腳本內調用rman腳本
oracle@SZDB:~> more rman_bak.sh
#!/bin/bash

# set environment variable

if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
export ORACLE_SID=CNMMBO
$ORACLE_HOME/bin/rman target / cmdfile=/users/oracle/rman.rcv log=/users/oracle/bak/rman.log
exit

#授予腳本執行許可權
oracle@SZDB:~> chmod 775 rman_bak.sh
#執行shell腳本

『肆』 達夢資料庫 如何使用sql語句查詢,資料庫容量大小和資料庫使用量大小

SELECT sum(df.TOTAL_SIZE) - sum(df.FREE_SIZE) as used ,
sum(df.TOTAL_SIZE) as total,
sum(df.FREE_SIZE) as free
FROM "SYS".V$TABLESPACE AS ts, "SYS".V$DATAFILE AS df WHERE ts.ID = df.GROUP_ID;

『伍』 資料庫如何設置主鍵(ID)自動增長啊(SQL語句)

在創建表的時候可以設置,方法如下,用一下sql語句。
createtabletableName(
idintidentity(1,1)primarykey,
datavarchar(50))

解釋:其中identity(1,1)代表自增,第一個1代表從1開始計數,第二個1代表每次增長1。

(5)達夢資料庫sql語句擴展閱讀:

SQL全名是結構化查詢語言[1](Structured Query Language),是用於資料庫中的標准數據查詢語言,IBM公司最早使用在其開發的資料庫系統中。1986年10月,美國國家標准學會(ANSI) 對 SQL 進行規范後,以此作為關系式資料庫管理系統的標准語言 (ANSI X3. 135-1986),1987年得到國際標准組織的支持下成為國際標准。不過各種通行的資料庫系統在其實踐過程中都對 SQL 規范作了某些編改和擴充。所以,實際上不同資料庫系統之間的SQL不能完全相互通用。

參考資料:

網路-SQL語言

『陸』 急求!急求!在線等!達夢資料庫時間差

不用這樣的,sqlserver中有相應的函數直接進行時間差的計算,輸出結果可以按照秒、分、時進行。你查一下就能得到。

『柒』 sql 列轉行

先建一張轉換後的表
create table changed
(
id number,
key varchar2(10),
val varchar2(10)
)
然後執行下面的插入語句
insert all
into changed(id,key,val) values(id,'a',a)
into changed(id,key,val) values(id,'b',b)
into changed(id,key,val) values(id,'c',c)
into changed(id,key,val) values(id,'d',d)
into changed(id,key,val) values(id,'e',e)
select id,a,b,c,d,e from change;
如果需要繼續添加,就模仿上面的格式寫好了,最後別忘記commit;