www.junmt.info

I love the guiter.


2024年4月25日(木) 18:41 JST

mysqldumpでカラムを含むデータダンプをする方法

データベース関連mysqldumpの-tオプションでテーブル定義を除いてダンプした場合、
insert文にカラム名が含まれていないため、別のデータベースに突っ込んだときに
カラムずれを起こすことがある。

これを防ぐには--complete-insertオプションをつければいい。

実行例)
mysqldump -u username -p -t --skip-triggers --complete-insert dbname > dbname.dump

[SQLServer]データベース復元時のユーザ有効化

データベース関連exec sp_change_users_login 'Update_One','【無効なユーザ名】','【有効なユーザ名】'

SQLServerが出力するメモリ不足の謎

データベース関連

SQLServer2008R2のsqlcmdで以下のようなコマンドを実行する。

sqlcmd -c ; -S localhost -U user -P pass -i hoge.sql

この時、hoge.sqlの中に「;」で区切られて、かつ「GO」が含まれていない
INSERT分やUPDATE分が大量にある場合、以下のようなメッセージが出力されます。

メッセージ 701、レベル 17、状態 139、サーバー localhost、行 15843
このクエリを実行するには、リソース プール 'internal' のシステム メモリが不足しています。

-cオプションはバッチターミネーターを指定しているので、「GO」が含まれるかどうかは
別問題のはずですが、ダメみたいです。

-c cmd_end バッチ ターミネータを指定します。既定では、"GO" だけが入力されている行があると、コマンドが終了したと見なされ、SQL Server に送られます。バッチ ターミネータをリセットする場合、Transact-SQL の予約キーワードやオペレーティング システムで特別な意味を持つ文字は、先頭に円記号が付いているかどうかに関係なく、使用しないでください。

※参考
http://technet.microsoft.com/ja-jp/library/ms162773.aspx

■追記:2010/09/29

-cで指定したバッチターミネーターを単独行にしたところ、期待通りの動作をしました。

×ダメな例(-c ;)

UPDATE EMPLOYEE SET NAME='太郎' WHERE CODE=1;
UPDATE EMPLOYEE SET NAME='太郎' WHERE CODE=2;

○良い例(-c ;)

UPDATE EMPLOYEE SET NAME='太郎' WHERE CODE=1
;
UPDATE EMPLOYEE SET NAME='太郎' WHERE CODE=2
;

[SQL]重複した値の抽出

データベース関連select 対象カラム from テーブル group by 対象カラム having count(*) > 1;

# havingを初めて使った・・・

[mysql]文字コードについて

データベース関連ちょっとだけ古いシステム移行をした時にPHP-mysql間で文字化けしてハマった。。

/etcmy.cnfに以下を追記
default-character-set=ujis
skip-character-set-client-handshake

まー、とりあえずEUC-JPにして逃げたが、、
俺って何屋さんだっけ・・・。

[Oracle]メモリ使用量(概算)

データベース関連Oracle9iのメモリ使用量の概算を掴むには以下のパラメータを見るとわかるかも

- shared_pool_size
- pga_aggregate_target
- db_cache_size

[SQLServer]メンテナンスプランの結果をメール送信

データベース関連1.オペレータの登録
2.メンテナンスプランでメール配信先を作成したオペレータにする

[Oracle]プロセス数とセッション数の確認

データベース関連select * from v$resource_limit
where resource_name in ('processes','sessions')

[Oracle]スキーマの使用領域を調べる方法

データベース関連※MByte単位

SELECT
owner,
tablespace_name,
sum(bytes)/1024/1024
FROM
dba_segments
GROUP BY
owner,
tablespace_name;

・sequenceはsystem表領域に格納される。
・table,indexがこれらに該当

[Oracle]セッションを調べる

データベース関連SELECT
s.saddr,
s.sid,
s.serial#,
s.username,
s.lockwait,
s.status,
s.schemaname,
s.process,
s.machine,
s.program,
s.logon_time,
s.event,
s.wait_time,
sql.sql_t,
sql.sql_i,
sql.SHARA,
sql.OPTIM ,
sql.OPTIM ,
sql.CPU_T
FROM
v$session s,
v$sql sql
WHERE
s.sql_id=sql.sql_i
and s.username = 'schema';

最初 | 前へ | 1 2| 次へ | 最後