UJP - 技術情報2 : Oracle/MassDataGenerate をテンプレートにして作成
Life is fun and easy!
不正IP報告数
Okan Sensor
Home
Information
Service
Tech(Free)
Tech(Member)
Blog
FAQ
メイン
ホーム
お知らせ
技術新着情報
組織
サービス
技術情報2
新規ページ作成
最新ページ一覧
全ページ一覧
ヘルプ
技術情報1
技術情報
ブログ
RSSサイト更新
旧ブログ
FAQ
画像ファイル管理
ログイン
ユーザー名:
パスワード:
パスワード再発行手続き
|
無料会員入会手続へ...
ブログ カテゴリ一覧
雑記
(222)
時事
(463)
テレビ・ドラマ
(405)
映画
(895)
007シリーズ
(33)
刑事コロンボ
(62)
災害
(207)
スキルチャージ
(37)
放送大学
(23)
Python
(10)
検定・試験
(32)
セキュリティ
(5)
ニュース・徒然
(315)
攻撃/ブルートフォース
(23)
脆弱性情報/注意喚起
(109)
ツール
(123)
スパム・フィッシング
(519)
事故・事件
(103)
ベンダ・サービス
(3)
文献・統計・参考資料
(124)
事故被害者記録
(44)
あとで確認
(1)
システム障害事故
(54)
サイト構築
(74)
Apple
(17)
Mac Pro 2013
(8)
MacBook Pro
(0)
2011 13inch
(30)
2015 15inch
(5)
2007 15inch
(1)
2008 17inch
(22)
Apple Watch
(70)
mac mini
(0)
2011 server
(4)
2010 server
(5)
2014
(14)
2010
(36)
2005
(8)
MacBook Air
(0)
2011 13inch
(8)
2011 11inch
(31)
2011 13inch/BCP
(9)
2013 13inch/US
(5)
MacBook
(0)
2017 12inch
(8)
2008 13inch 2
(26)
2008 13inch 1
(15)
Macソフト
(131)
Mac周辺機器
(35)
PowerBook
(5)
iPod touch/iOS
(57)
iPhone
(163)
iPad
(75)
ガジェット
(128)
fire tv
(1)
HUAWEI Watch FIT
(10)
カメラ/デジカメ
(40)
タイムラプス
(6)
ネットワーク機器
(17)
ネットワークケーブル
(4)
ネットワークその他
(6)
ネットワークスピード
(13)
YAMAHA/ヤマハ
(1)
FWX120
(2)
RTX1200
(14)
RTX1100/RTX1000
(10)
RT107e
(2)
NETGEAR WAC510
(11)
NERGEAR Orbi
(1)
Panasonic MNOseries
(3)
マウス&キーボード
(57)
AV機器・レグザ
(99)
ハウツー
(105)
GPS/地図
(69)
ビジネス
(169)
新規ビジネス
(18)
お仕事
(63)
ケータイビジネス
(41)
PC
(11)
EndeavorTN40
(4)
DynabookPT45
(8)
CF-RZ6
(7)
PN-ZP30
(5)
CF-LX4
(9)
Raspberry Pi
(58)
ML110 G5
(20)
LIFEBOOK
(11)
Surface
(50)
ThinkPad R61
(5)
モバイル
(16)
スマホアプリ
(73)
ケータイスマホ機種
(34)
データ通信・契約
(78)
EMONSTER
(5)
IDEOS
(12)
Galaxy Note
(38)
Windows Phone
(20)
Nexus
(22)
コンピュータ
(10)
Windows
(90)
クライアントソフト
(73)
サーバソフト
(32)
Db2
(16)
インターネット
(66)
Google
(111)
ネットサービス
(157)
ハードウェア
(19)
ディスプレイ
(11)
プリンタ
(8)
ストレージ
(5)
情報システム
(95)
趣味
(3)
ポケモンGO
(627)
寝台特急カシオペア/カシオペア紀行
(34)
TOKYO2020
(85)
食べた
(207)
たべた(駅弁)
(30)
飲んだ
(33)
調理した
(21)
ラーメン・麺類
(202)
鉄道
(234)
農園
(158)
アクアリウム
(159)
ホテル・旅館
(42)
書評
(37)
演劇
(21)
車・バイク
(72)
自然・星
(35)
散策・近代建築
(18)
神社・寺
(50)
高層ビル
(24)
現代建築
(15)
建築物
(6)
観光・名所
(87)
イベント
(72)
散策:城
(33)
ディズニー
(24)
モーターショー
(16)
鳥
(9)
美術館
(28)
コンサート/ライブ
(64)
船
(3)
スポーツ
(118)
音楽
(73)
サマリ
(6)
ミニカー
(4)
ピンバッチ
(3)
Nゲージダイキャスト
(8)
Nゲージ
(0)
サイト運営
(39)
人生
(52)
監視/防犯/みまもり/遠隔
(48)
お金の話
(89)
体・病気
(116)
投資で凍死
(166)
相続・土地売買
(9)
コンテンツ更新情報
(2)
Oracleに大量データをINSERTしてシーケンスを使ってダミーデータを作成する
をテンプレートにして作成
技術情報2
Oracle/MassDataGenerate をテンプレートにして作成
開始行:
*Oracleに大量データをINSERTしてシーケンスを使ってダミーデ...
**はじめに
Oracleでインデックス作成時間とかデータバックアップ時間...
なお,empテーブルはutlsampl.sqlを実行してscottユーザと...
また,シリアル番号を生成するためにOracle特有のシーケン...
今回は,Oracle 11g Express Edition(XE)を使っている.
**desc empで環境を確認する
まず,SQL*Plusで,scottユーザで接続する.
SQL> conn scott/tiger@xe
接続されました。
SQL>
empテーブルのテーブル定義を確認する.
SQL> desc emp;
名前 NULL? 型
----------------------------------------- -------- ----...
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
SQL>
**alter tableで桁数を増やす
empno(社員番号)が4桁だと999件しか作れないないので,桁数...
SQL> alter table emp modify ( empno number(38) ) ;
表が変更されました。
SQL>
NUMBER型の最大の38桁.変更された事を確認.
SQL> desc emp;
名前 NULL? 型
----------------------------------------- -------- ----...
EMPNO NOT NULL NUMBER(38)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
SQL>
社員数が38桁もいる会社なんて嫌だな...
**empテーブルの初期データを消す
最初から作りたので,empテーブルのデータを確認する.
SQL> select count(*) from emp;
COUNT(*)
----------
12
SQL>
この12件のデータは使わないので,消す.
SQL> delete from emp;
12行が削除されました。
SQL> commit;
コミットが完了しました。
SQL> select count(*) from emp;
COUNT(*)
----------
0
SQL>
消えた事が確認できた.
**SEQUENCEを作成する
社員ナンバempnoを自動連番にしたいので,シーケンスを作成...
SQL> CREATE SEQUENCE seq_empno
2 INCREMENT BY 1 START WITH 1 MAXVALUE 10000000000000...
3 NOMINVALUE CYCLE NOORDER CACHE 100
4 /
順序が作成されました。
SQL>
先ほどempテーブルのデータを消したので,発番は1から1毎と...
**整合性制約でエラーになった
適当にデータを入れてみる.
SQL> insert into emp values (seq_empno.nextval,'a','b',1...
2 /
insert into emp values (seq_empno.nextval,'a','b',1,sysd...
*
行1でエラーが発生しました。:
ORA-02291: 整合性制約(SCOTT.FK_DEPTNO)に違反しました - ...
SQL>
DEPTNOがdeptテーブルの外部キーになっていて,つまりdept...
deptテーブルのdeptnoを確認する.
SQL> select deptno from dept;
DEPTNO
----------
10
20
30
40
SQL>
deptnoに設定さされている値,ここでは10を設定する.
SQL> insert into emp values (seq_empno.nextval,'a','b',1...
1行が作成されました。
SQL>
もう1回データを登録.
SQL> insert into emp values (seq_empno.nextval,'a','b',1...
1行が作成されました。
SQL>
件数を確認.
SQL> select count(*) from emp;
COUNT(*)
----------
2
SQL>
2件あり.シーケンスで自動発番されるemopno列を確認する.
SQL> select empno,ename,deptno from emp;
EMPNO ENAME DEPTNO
---------- ------------------------------ ----------
2 a 10
3 a 10
SQL>
シーケンスが2から始まっている.1回目に制約エラーで失敗...
面倒なので,データを全部消して,再度追加してみる.
SQL> delete from emp;
2行が削除されました。
SQL> commit;
コミットが完了しました。
SQL> insert into emp values (seq_empno.nextval,'a','b',1...
2 /
1行が作成されました。
SQL> select empno from emp;
EMPNO
----------
4
SQL>
2番3番のレコードが消え,4番が追加されている事が確認でき...
**シーケンスをリセットする.
ここで再度1〜3番のレコードを入れようとすると,シーケン...
よって,まずはシーケンスを削除する.
SQL> drop sequence seq_empno;
順序が削除されました。
SQL>
これでシーケンスを削除したので自動的に入らない.手動で...
SQL> insert into emp values (1,'a','b',1,sysdate,3,4,10);
1行が作成されました。
SQL> insert into emp values (2,'a','b',1,sysdate,3,4,10);
1行が作成されました。
SQL> insert into emp values (3,'a','b',1,sysdate,3,4,10);
1行が作成されました。
SQL> select empno from emp;
EMPNO
----------
1
2
3
4
SQL>
再度シーケンスを作成.4まで発番されているので,5から発...
SQL> CREATE SEQUENCE seq_empno
2 INCREMENT BY 1
3 START WITH 5
4 MAXVALUE 10000000000000000000000000000000000
5 NOMINVALUE CYCLE NOORDER CACHE 100
6 /
順序が作成されました。
SQL>
データを追加して,シーケンスが想定通り連番で発番されて...
SQL> insert into emp values (seq_empno.nextval,'a','b',1...
1行が作成されました。
SQL> insert into emp values (seq_empno.nextval,'a','b',1...
1行が作成されました。
SQL>
データを確認する.
SQL> select empno,deptno from emp;
EMPNO DEPTNO
---------- ----------
1 10
2 10
3 10
5 20
6 20
4 10
6行が選択されました。
SQL>
ソートして表示する.
SQL> select empno,deptno from emp order by empno;
EMPNO DEPTNO
---------- ----------
1 10
2 10
3 10
4 10
5 20
6 20
6行が選択されました。
SQL>
連番が発番されている事が確認できた.
**大量データを入れる準備
最初からリセットするために,データを決してシーケンスも...
SQL> delete from emp;
6行が削除されました。
SQL> drop sequence seq_empno;
順序が削除されました。
SQL>
再度シーケンスを作成する.データを消したので,STARTを1...
SQL> CREATE SEQUENCE seq_empno
2 INCREMENT BY 1
3 START WITH 1
4 MAXVALUE 10000000000000000000000000000000000
5 NOMINVALUE CYCLE NOORDER CACHE 100
6 /
順序が作成されました。
SQL> quit
Oracle Database 11g Express Edition Release 11.2.0.2.0 -...
MBA13:~ ujpadmin$
**大量データを入れるスクリプトを確認する
empテーブルに10万件データを挿入するスクリプト.
MBA13:~ ujpadmin$ cat loop_insert.sql
SET SERVEROUTPUT ON
begin
DBMS_OUTPUT.PUT_LINE(SYSTIMESTAMP);
for i in 1..100000 loop
insert into emp values (seq_empno.nextval,'a','b',1,...
end loop;
commit;
DBMS_OUTPUT.PUT_LINE(SYSTIMESTAMP);
end;
MBA13:~ ujpadmin$
処理前と処理後にDBMS_OUTPUT.PUT_LINEで時間を表示.SET S...
**大量データを入れるスクリプトを実行する(最後にcommit)
まずは実行してみる.
SQL> @loop_insert.sql
9 /
16-06-01 01:19:14.649000000 +09:00
16-06-01 01:21:56.259000000 +09:00
PL/SQLプロシージャが正常に完了しました。
SQL> select count(*) from emp;
COUNT(*)
----------
1000000
SQL>
100万件のデータ挿入が約2分42秒ほど.162秒.
**大量データを入れるスクリプトを実行する(都度commit)
commitの位置を変更してみる.
MBA13:~ ujpadmin$ cat loop_insert_commit.sql
SET SERVEROUTPUT ON
begin
DBMS_OUTPUT.PUT_LINE(SYSTIMESTAMP);
for i in 1..1000000 loop
insert into emp values (seq_empno.nextval,'a','b',1,...
commit;
end loop;
DBMS_OUTPUT.PUT_LINE(SYSTIMESTAMP);
end;
MBA13:~ ujpadmin$
1回insert文を実行する都度,commitしている.これは遅いは...
SQL> @loop_insert_commit.sql
9 /
16-06-01 01:23:09.900000000 +09:00
16-06-01 01:30:09.509000000 +09:00
PL/SQLプロシージャが正常に完了しました。
SQL>
7分.420秒.約2.6倍でした.
終了行:
*Oracleに大量データをINSERTしてシーケンスを使ってダミーデ...
**はじめに
Oracleでインデックス作成時間とかデータバックアップ時間...
なお,empテーブルはutlsampl.sqlを実行してscottユーザと...
また,シリアル番号を生成するためにOracle特有のシーケン...
今回は,Oracle 11g Express Edition(XE)を使っている.
**desc empで環境を確認する
まず,SQL*Plusで,scottユーザで接続する.
SQL> conn scott/tiger@xe
接続されました。
SQL>
empテーブルのテーブル定義を確認する.
SQL> desc emp;
名前 NULL? 型
----------------------------------------- -------- ----...
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
SQL>
**alter tableで桁数を増やす
empno(社員番号)が4桁だと999件しか作れないないので,桁数...
SQL> alter table emp modify ( empno number(38) ) ;
表が変更されました。
SQL>
NUMBER型の最大の38桁.変更された事を確認.
SQL> desc emp;
名前 NULL? 型
----------------------------------------- -------- ----...
EMPNO NOT NULL NUMBER(38)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
SQL>
社員数が38桁もいる会社なんて嫌だな...
**empテーブルの初期データを消す
最初から作りたので,empテーブルのデータを確認する.
SQL> select count(*) from emp;
COUNT(*)
----------
12
SQL>
この12件のデータは使わないので,消す.
SQL> delete from emp;
12行が削除されました。
SQL> commit;
コミットが完了しました。
SQL> select count(*) from emp;
COUNT(*)
----------
0
SQL>
消えた事が確認できた.
**SEQUENCEを作成する
社員ナンバempnoを自動連番にしたいので,シーケンスを作成...
SQL> CREATE SEQUENCE seq_empno
2 INCREMENT BY 1 START WITH 1 MAXVALUE 10000000000000...
3 NOMINVALUE CYCLE NOORDER CACHE 100
4 /
順序が作成されました。
SQL>
先ほどempテーブルのデータを消したので,発番は1から1毎と...
**整合性制約でエラーになった
適当にデータを入れてみる.
SQL> insert into emp values (seq_empno.nextval,'a','b',1...
2 /
insert into emp values (seq_empno.nextval,'a','b',1,sysd...
*
行1でエラーが発生しました。:
ORA-02291: 整合性制約(SCOTT.FK_DEPTNO)に違反しました - ...
SQL>
DEPTNOがdeptテーブルの外部キーになっていて,つまりdept...
deptテーブルのdeptnoを確認する.
SQL> select deptno from dept;
DEPTNO
----------
10
20
30
40
SQL>
deptnoに設定さされている値,ここでは10を設定する.
SQL> insert into emp values (seq_empno.nextval,'a','b',1...
1行が作成されました。
SQL>
もう1回データを登録.
SQL> insert into emp values (seq_empno.nextval,'a','b',1...
1行が作成されました。
SQL>
件数を確認.
SQL> select count(*) from emp;
COUNT(*)
----------
2
SQL>
2件あり.シーケンスで自動発番されるemopno列を確認する.
SQL> select empno,ename,deptno from emp;
EMPNO ENAME DEPTNO
---------- ------------------------------ ----------
2 a 10
3 a 10
SQL>
シーケンスが2から始まっている.1回目に制約エラーで失敗...
面倒なので,データを全部消して,再度追加してみる.
SQL> delete from emp;
2行が削除されました。
SQL> commit;
コミットが完了しました。
SQL> insert into emp values (seq_empno.nextval,'a','b',1...
2 /
1行が作成されました。
SQL> select empno from emp;
EMPNO
----------
4
SQL>
2番3番のレコードが消え,4番が追加されている事が確認でき...
**シーケンスをリセットする.
ここで再度1〜3番のレコードを入れようとすると,シーケン...
よって,まずはシーケンスを削除する.
SQL> drop sequence seq_empno;
順序が削除されました。
SQL>
これでシーケンスを削除したので自動的に入らない.手動で...
SQL> insert into emp values (1,'a','b',1,sysdate,3,4,10);
1行が作成されました。
SQL> insert into emp values (2,'a','b',1,sysdate,3,4,10);
1行が作成されました。
SQL> insert into emp values (3,'a','b',1,sysdate,3,4,10);
1行が作成されました。
SQL> select empno from emp;
EMPNO
----------
1
2
3
4
SQL>
再度シーケンスを作成.4まで発番されているので,5から発...
SQL> CREATE SEQUENCE seq_empno
2 INCREMENT BY 1
3 START WITH 5
4 MAXVALUE 10000000000000000000000000000000000
5 NOMINVALUE CYCLE NOORDER CACHE 100
6 /
順序が作成されました。
SQL>
データを追加して,シーケンスが想定通り連番で発番されて...
SQL> insert into emp values (seq_empno.nextval,'a','b',1...
1行が作成されました。
SQL> insert into emp values (seq_empno.nextval,'a','b',1...
1行が作成されました。
SQL>
データを確認する.
SQL> select empno,deptno from emp;
EMPNO DEPTNO
---------- ----------
1 10
2 10
3 10
5 20
6 20
4 10
6行が選択されました。
SQL>
ソートして表示する.
SQL> select empno,deptno from emp order by empno;
EMPNO DEPTNO
---------- ----------
1 10
2 10
3 10
4 10
5 20
6 20
6行が選択されました。
SQL>
連番が発番されている事が確認できた.
**大量データを入れる準備
最初からリセットするために,データを決してシーケンスも...
SQL> delete from emp;
6行が削除されました。
SQL> drop sequence seq_empno;
順序が削除されました。
SQL>
再度シーケンスを作成する.データを消したので,STARTを1...
SQL> CREATE SEQUENCE seq_empno
2 INCREMENT BY 1
3 START WITH 1
4 MAXVALUE 10000000000000000000000000000000000
5 NOMINVALUE CYCLE NOORDER CACHE 100
6 /
順序が作成されました。
SQL> quit
Oracle Database 11g Express Edition Release 11.2.0.2.0 -...
MBA13:~ ujpadmin$
**大量データを入れるスクリプトを確認する
empテーブルに10万件データを挿入するスクリプト.
MBA13:~ ujpadmin$ cat loop_insert.sql
SET SERVEROUTPUT ON
begin
DBMS_OUTPUT.PUT_LINE(SYSTIMESTAMP);
for i in 1..100000 loop
insert into emp values (seq_empno.nextval,'a','b',1,...
end loop;
commit;
DBMS_OUTPUT.PUT_LINE(SYSTIMESTAMP);
end;
MBA13:~ ujpadmin$
処理前と処理後にDBMS_OUTPUT.PUT_LINEで時間を表示.SET S...
**大量データを入れるスクリプトを実行する(最後にcommit)
まずは実行してみる.
SQL> @loop_insert.sql
9 /
16-06-01 01:19:14.649000000 +09:00
16-06-01 01:21:56.259000000 +09:00
PL/SQLプロシージャが正常に完了しました。
SQL> select count(*) from emp;
COUNT(*)
----------
1000000
SQL>
100万件のデータ挿入が約2分42秒ほど.162秒.
**大量データを入れるスクリプトを実行する(都度commit)
commitの位置を変更してみる.
MBA13:~ ujpadmin$ cat loop_insert_commit.sql
SET SERVEROUTPUT ON
begin
DBMS_OUTPUT.PUT_LINE(SYSTIMESTAMP);
for i in 1..1000000 loop
insert into emp values (seq_empno.nextval,'a','b',1,...
commit;
end loop;
DBMS_OUTPUT.PUT_LINE(SYSTIMESTAMP);
end;
MBA13:~ ujpadmin$
1回insert文を実行する都度,commitしている.これは遅いは...
SQL> @loop_insert_commit.sql
9 /
16-06-01 01:23:09.900000000 +09:00
16-06-01 01:30:09.509000000 +09:00
PL/SQLプロシージャが正常に完了しました。
SQL>
7分.420秒.約2.6倍でした.
ページ名:
Counter: 0, today: 0, yesterday: 0
広告スペース
検索用語を入力
検索フォームを送信
Web
www.ujp.jp