検索
ホームページデータベースmysql チュートリアルPL/SQL中如何让程序每隔几秒插入一条数据

PL/SQL中如何让程序每隔几秒插入一条数据

Jun 07, 2016 pm 02:56 PM
orsqlどうやって入れるデータプログラム書く

在编写ORACLE PL/SQL中,如果需要程序执行中暂停几秒钟再继续执行,可以通过oracle内置的dbms_lock.sleep来实现,不过dbms_lock包需要用户自己安装。 [root@oraclevm ~]# su - oracle [oracle@oraclevm ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.

在编写ORACLE PL/SQL中,如果需要程序执行中暂停几秒钟再继续执行,可以通过oracle内置的dbms_lock.sleep来实现,不过dbms_lock包需要用户自己安装。

[root@oraclevm ~]# su - oracle

[oracle@oraclevm ~]$ sqlplus / as sysdba


SQL*Plus: Release 11.2.0.4.0 Production on Mon May 25 16:36:12 2015


Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> startup    


SQL> @?/rdbms/admin/dbmslock.sql


Package created.


Synonym created.


Grant succeeded.


SQL> grant execute on dbms_lock to public; --授权PUBLIC执行权限  

  

Grant succeeded.  

  

SQL> create table test1(id number,name varchar2(40),time date);   --创建test1临时表  

  

Table created.  

  

SQL> select * from test1;  --无数据  

  

no rows selected    

  

SQL> SET TIMING ON     --打开时间显示  

SQL> begin             --开始执行测试脚本  

  2    insert into test1(id,name,time) values(1,'Andy',sysdate);  

  3    DBMS_LOCK.SLEEP(10);  --让程序暂时10秒钟  

  4    insert into test1(id,name,time) values(2,'Shirley',sysdate);  

  5    commit;  

  6  end;  

  7  /  

  

PL/SQL procedure successfully completed.  

  

Elapsed: 00:00:10.04  --程序执行时间为10.04秒  

  

  

SQL> SELECT ID,NAME,TO_CHAR(TIME,'YYYY/MM/DD HH24:MI:SS') AS TIME FROM TEST1; 

--查询执行结果  

  

        ID NAME                           TIME  

---------- -------------------------   -----------------  

         1 Andy                        2014/12/10 10:09:03   --第一条的插入时间是09:03  

         2 Shirley                     2014/12/10 10:09:13   --第二条的插入时间是09:13

刚好比第一条晚了10秒钟    

  

SQL> drop table test1;  

  

Table dropped.  


下面给个例子:

每隔一秒插入一条数据

vi /tmp/11.sh

#/bin/sh

su - oracle

sqlplus / as sysdba

drop table test;

drop sequence test_seq;

create table test (id int,hostname varchar2(50),datetime date);

create sequence test_seq

minvalue 1

maxvalue 100000

start with 1

increment by 1

cache 20;

declare

maxrecords constant int:=100000;

i int :=1;

begin

for i in 1..maxrecords loop

insert into test

(id,hostname,datetime)

values

(test_seq.nextval,'oraclevm',sysdate);

commit;

dbms_lock.sleep(1);

end loop;

end;

/

exit;

EOF


[root@oraclevm ~]#chmod 755 /tmp/11.sh

[root@oraclevm ~]#cd /tmp

[root@oraclevm ~]#./11.sh

即可执行。


先设置一下时间格式

export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"


最后进行数据查询

spool /tmp/test_oracle

set linesize 80

col hostname format a8;

set colsep' ';

set pagesize 0;


SQL> select id,hostname,to_char(datetime,'YYYY-MM-DD HH24:MI:SS') from test;

         1 oraclevm 2014-12-27 10:19:09

         2 oraclevm 2014-12-27 10:19:10

         3 oraclevm 2014-12-27 10:19:11

         4 oraclevm 2014-12-27 10:19:12

         5 oraclevm 2014-12-27 10:19:13

         6 oraclevm 2014-12-27 10:19:14

         7 oraclevm 2014-12-27 10:19:15

         8 oraclevm 2014-12-27 10:19:16

         9 oraclevm 2014-12-27 10:19:17

        10 oraclevm 2014-12-27 10:19:18

        


spool用法:

spool是Oracle SQL*PLUS下的命令,可以用它来导出表中的大量数据,生成格式可以由自己手动控制。

1. 编写spool.sql脚本,存放在/tmp目录下

set trimspool on 
set linesize 120 
set pagesize 2000 
set newpage 1 
set heading off 
set term off 
set echo off
set feedback off
spool /tmp/data.txt 
select deptno || ',' || dname || ',' || loc from dept;
spool off


2. 在sql*plus上用scott用户登录,执行上面的sql脚本

!/tmp/spool.sql(linux下)

@d:\spool.sql(windows下)


3.观察相应目录,生成了data.txt文件,txt中的内容如下:

10,ACCOUNTING,NEW YORK
20,RESEARCH,DALLAS
30,SALES,CHICAGO
40,OPERATIONS,BOSTON

总结:

利用spool可以方便地导出所需要的表,进而可以利用导出的数据进行不同数据库间的数据迁移。

下面介绍使用spool的一些常用设置:

set colsep ' ';    //域输出分隔符 
set echo off;    //显示start启动的脚本中的每个sql命令,缺省为on 
set feedback off;  //回显本次sql命令处理的记录条数,缺省为on 
set heading off;   //输出域标题,缺省为on 
set pagesize 0;   //输出每页行数,缺省为24,为了避免分页,可设定为0。 
set termout off;   //显示脚本中的命令的执行结果,缺省为on(可以缩写为term)
set trimout on;   //去除标准输出每行的拖尾空格,缺省为off 
set trimspool on;  //去除重定向(spool)输出每行的拖尾空格,缺省为off 


注意:

如果直接在sql*plus中执行上面的spool.sql命令,而不通过执行脚本来进行,那么在生成的txt文件中会存在执行的sql语句。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
MySQLのデータベースアップグレードをどのように処理しますか?MySQLのデータベースアップグレードをどのように処理しますか?Apr 30, 2025 am 12:28 AM

MySQLデータベースをアップグレードする手順には次のものがあります。1。データベースをバックアップします。2。現在のMySQLサービスを停止します。3。MySQLの新しいバージョンをインストールします。アップグレードプロセス中に互換性の問題が必要であり、Perconatoolkitなどの高度なツールをテストと最適化に使用できます。

MySQLに使用できるさまざまなバックアップ戦略は何ですか?MySQLに使用できるさまざまなバックアップ戦略は何ですか?Apr 30, 2025 am 12:28 AM

MySQLバックアップポリシーには、論理バックアップ、物理バックアップ、増分バックアップ、レプリケーションベースのバックアップ、クラウドバックアップが含まれます。 1. Logical BackupはMySqldumpを使用してデータベースの構造とデータをエクスポートします。これは、小さなデータベースとバージョンの移行に適しています。 2.物理バックアップは、データファイルをコピーすることで高速かつ包括的ですが、データベースの一貫性が必要です。 3.インクリメンタルバックアップは、バイナリロギングを使用して変更を記録します。これは、大規模なデータベースに適しています。 4.レプリケーションベースのバックアップは、サーバーからバックアップすることにより、生産システムへの影響を減らします。 5. Amazonrdsなどのクラウドバックアップは自動化ソリューションを提供しますが、コストと制御を考慮する必要があります。ポリシーを選択するときは、データベースサイズ、ダウンタイム許容度、回復時間、および回復ポイントの目標を考慮する必要があります。

MySQLクラスタリングとは何ですか?MySQLクラスタリングとは何ですか?Apr 30, 2025 am 12:28 AM

mysqlclusteringenhancesdatabaserobustnessnessnessnessnessnistandistributiondistributingdataacrossmultiplenodes.itesthendbenginefordatareplication andfaulttolerance、保証highavailability.setupinvolvesconfiguringmanagement、data、ssqlnodes、carefulmonitoringringandpe

MySQLのパフォーマンスのためにデータベーススキーマ設計を最適化するにはどうすればよいですか?MySQLのパフォーマンスのためにデータベーススキーマ設計を最適化するにはどうすればよいですか?Apr 30, 2025 am 12:27 AM

MySQLのデータベーススキーマ設計の最適化は、次の手順を通じてパフォーマンスを改善できます。1。インデックス最適化:一般的なクエリ列にインデックスを作成し、クエリのオーバーヘッドのバランスをとり、更新を挿入します。 2。テーブル構造の最適化:正規化または反通常化によりデータ冗長性を削減し、アクセス効率を改善します。 3。データ型の選択:Varcharの代わりにINTなどの適切なデータ型を使用して、ストレージスペースを削減します。 4。パーティション化とサブテーブル:大量のデータボリュームの場合、パーティション化とサブテーブルを使用してデータを分散させてクエリとメンテナンスの効率を改善します。

MySQLのパフォーマンスをどのように最適化できますか?MySQLのパフォーマンスをどのように最適化できますか?Apr 30, 2025 am 12:26 AM

tooptimizemysqlperformance、soflowthesesteps:1)properindexingtospeedupqueries、2)useexplaintoanalyzeandoptimize Queryperformance、3)AductServerContingSettingStingsinginginnodb_buffer_pool_sizeandmax_connections、4)

データ処理と計算にMySQL関数を使用する方法データ処理と計算にMySQL関数を使用する方法Apr 29, 2025 pm 04:21 PM

MySQL関数は、データ処理と計算に使用できます。 1.基本的な使用には、文字列処理、日付計算、数学操作が含まれます。 2。高度な使用法には、複数の関数を組み合わせて複雑な操作を実装することが含まれます。 3.パフォーマンスの最適化では、Where句での機能の使用を回避し、GroupByおよび一時テーブルを使用する必要があります。

MySQLにデータを挿入する効率的な方法MySQLにデータを挿入する効率的な方法Apr 29, 2025 pm 04:18 PM

MySQLでデータを挿入するための効率的な方法には、次のものが含まれます。1。insertInto ...値構文、2。LoadDatainFileコマンドの使用、3。トランザクション処理の使用、4。バッチサイズの調整、5。Insurtignoreまたは挿入の使用...

フィールドをMySQLテーブルに追加および削除する手順フィールドをMySQLテーブルに追加および削除する手順Apr 29, 2025 pm 04:15 PM

MySQLでは、AlterTabletable_nameaddcolumnnew_columnvarchar(255)afterexisting_columnを使用してフィールドを追加し、andtabletable_namedopcolumncolumn_to_dropを使用してフィールドを削除します。フィールドを追加するときは、クエリのパフォーマンスとデータ構造を最適化する場所を指定する必要があります。フィールドを削除する前に、操作が不可逆的であることを確認する必要があります。オンラインDDL、バックアップデータ、テスト環境、および低負荷期間を使用したテーブル構造の変更は、パフォーマンスの最適化とベストプラクティスです。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。