利用規約の変更について

MySQLのストアド(プロシージャ/ファンクション)でテキストファイルを削除する方法を探しています。
テキストファイルは、他のファイルでも構いません。
テーブルにデータがINSERTされた時に実行されるストアドです。

system rm -f 'ファイル名';
によるファイルの削除を試みましたが、エラーが発生します。

可能であればストアドからファイルを削除したいですが、難しいようでしたら上記の条件を満たす限り、どのような方法でも構いませんので、教えて欲しいです。

各バージョンは最新バージョンとします。

大変困っていますので、どうかご協力を、宜しくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

MySQLから削除するのは難しいのでは?



実行するトリガーとなるプログラム側で処理するのがよろしいかと。
コマンドラインであればシェルやバッチで、プログラム的にであれば
phpなどで・・・
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。

お礼日時:2014/04/21 17:39

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qmysqlのsecure-file-privオプションの値を変更したい。

このオプションが設定されていると任意のホルダーのファイルがload
data infileでERROR1290 (HY000)のエラーが出る。

このオプションを変更して値をnullにしたい。その方法が分からな
い。簡単に変更出来る方法を教えて下さい。

宜しく、お願いします。

Aベストアンサー

このへんでしょうか?

https://dev.mysql.com/doc/refman/5.6/ja/windows-start-service.html

Qselect * outfileがうまくいきません。

rootで接続して
データのバックアップを試そうとしたのですが、エラーが出ます。

mysql> select * from user into outfile "/root/outfile";
ERROR 1 (HY000): Can't create/write to file '/root/outfile' (Errcode: 13)
他のディレクトリも試したのですがうまくいきません。/var/tmp以下はうまくいきました。なぜでしょうか?

Aベストアンサー

Errcode: 13はアクセス権限が無い
アクセス権限をディレクトリに付与してから
再実行してください

mysqld 実行ユーザ(通常は mysql ユーザ)の権限で、ディレクトリにファイルが作成できない場合にこのエラーになります。

QDBエラーの意味

フォームからDBにデータ挿入しようとすると

Column count doesn't match value count at row 1

というエラーが出てしまいます・・・どういう意味を持ったエラーなんでしょうか?

Aベストアンサー

カラム数と値の数が合わない、と言う事です。簡単な英語なので覚えましょう。
カラム数が4つにもかかわらず、
"INSERT INTO tablename VALUES (1,'hoge',3)"
とやった場合等に出るエラーだと思います。

Qストアドプロシージャでcsvファイルへデータにエクスポート

いつも勉強させていただいています。
ストアドプロシージャの勉強をし始めて間もない素人ですがよろしくお願いします。

SQL-server2005でテーブルをCSVファイルに、ストアドプロシージャを使ってそのままエクスポートする、と言うことをやっています。
以下作成したストアドプロシージャです。
*******************************************
CREATE PROCEDURE [ストプロ名]
AS
DECLARE @command VARCHAR(200)
BEGIN
SET
@command = ' bcp [データベース名].[スキーマ].[テーブル]
out C:\XXXX\aaa.txt -PXXXXXX -UXXXXXX -SXXXXXX'
EXECUTE master.dbo.xp_cmdshell @command
END
****************************************
解析ボタン、実行ボタンをクリックしてもエラーは出ません。
「ストアドプロシージャの実行」を選択して実行させても、
アラーは表示されず、ファイルも作成されません。
xp_cmdshell が有効になるように設定もしました。

残念ながら検討すらつかない状態です。ぜひご教授お願いします。

いつも勉強させていただいています。
ストアドプロシージャの勉強をし始めて間もない素人ですがよろしくお願いします。

SQL-server2005でテーブルをCSVファイルに、ストアドプロシージャを使ってそのままエクスポートする、と言うことをやっています。
以下作成したストアドプロシージャです。
*******************************************
CREATE PROCEDURE [ストプロ名]
AS
DECLARE @command VARCHAR(200)
BEGIN
SET
@command = ' bcp [データベース名].[スキーマ].[テーブル]
out C:\XXXX\aaa.tx...続きを読む

Aベストアンサー

まず、@command に入れている内容をコマンドプロンプトで実行した場合は、ちゃんと出力されていますか?

あと、、、
「C:\XXXX\aaa.txt」のファイルの有無は、SQL Servereが入ってるサーバー内を確認してますか?

私は昔、自分のローカルにできると勘違いしていた事があるもので。。。

QDataTableから条件を満たした行を別のDatatableへコピーしたい

VC#2005とSQLServer2005ExpressEditionでWindowsアプリケーションを作成しています。

データベースの中から1つのマスタテーブルのデータを呼び出すのにTableAdapterを使ってDataTableにデータをバインドしました。
そこから条件を満たしている行をすべて抽出して同じ型のDataTableにデータをコピーしたいのです。

ですから、DataTableは2つ用意しています。1つは上記の通りデータをバインドしていますが、もう1つは宣言しただけなのでまだ空っぽの状態です。
DataTableにはカラムが3列あり、その中の1列をグループIDとしています。
条件としてはグループIDが同じであるということです。
やりたいことは条件を満たしている行をすべて抽出して空のデータテーブルにコピーすることです。

どなたかご存知の方いらっしゃれば教えてください。
よろしくお願いします。

Aベストアンサー

C#だったんですね … さほど変わりないと思いますが

お使いのコードが提示されていないのでこちらで適当な変数をでっち上げております
現在お使いのコードを支障の無い範囲で提示しましょう

//元のデータテーブルがdtSourceとすると
// テーブル構造をコピー
DataTable dt = dtSource.Clone();
DataRow r = null;
foreach( DataRow dtRow in dtSource.Select("選択するための文字列"))
{
  r = dt.NewRow();
  for( int n = 0; n < dtRow.ItemArray.Length; n++ )
  {
    r[n] = dtRow[n];
  }
  dt.Rows.Add( r );
}
といった具合になると思います

# 前回の投稿中のstSorceはdtSourceの単なるミスです

Q特定のSQLSTATE以外の例外処理について

MySQLでは、OracleのEXCEPTION 文による例外処理のようなことはできないのでしょうか?
自分なりに調べてみたところ、MySQLではDECLARE ハンドラを使用して例外処理を行うと知りました。

■MySQL :: MySQL 5.1 リファレンスマニュアル :: 17.2.8.2 DECLARE ハンドラより
http://dev.mysql.com/doc/refman/5.1/ja/declare-handlers.html
■例外処理(DECLARE ... HANDLER) - bnoteより
http://www.bnote.net/mysql/appendix/exception.shtml

しかし、この場合だと、特定のSQLSTATE以外のエラーが発生した場合に、例外処理を行えなくて困っています。
特定のSQLSTATE以外の不足のエラーが起こった場合でも、例外処理を行いたい場合はどうすればいいのでしょうか?ご教授下さい。

Aベストアンサー

最初のリンクのマニュアル記載の通り、SQLEXCEPTIONを使えばいいのでは?

QMYSQLのストアドでの動的SQLについて

MYSQL初心者ですが、よろしくお願いします。

MYSQL(ver5.5)でストアドプロシージャを作成しようと思います。
WEBの検索画面に入力された条件に応じて、WHERE句を動的に作成したいのです。

例えば、WEBの検索画面の検索条件に、
(1)氏名
(2)住所
(3)電話番号
があり、(1)と(3)に入力された場合は、
あるテーブルの検索条件を
WHERE 氏名=入力氏名 AND 電話番号=入力電話番号
のように動的にSQLを作成したいです。
(条件に応じて、静的なSQLを使い分けるやりかたはしたくない)
このような動的なSQLはストアドプロシージャで作成できのでしょうか?
よろしくお願いします。

Aベストアンサー

ストアドプロシージャ内で、テーブル名やカラム名など識別子を動的に変更することはできません。
create 時に、構文チェックが行われ、テーブル名やカラム名が確定していないとエラーになります。変数を使えるのは、識別子以外のデータ値のみ。
静的select文で、あるデータがnull や空文字列ならそのカラムは条件に使わないようにするなら、where句は次の様に書くとよい

where (case when :x is null or :x ='' then 1 else `a` <=> :x end)
and (case when null <=> :y or :y ='' then 1 else `b` <=> :y end)
and (case when isnull(:z) or :z ='' then 1 else `c` like concat('%', :z, '%') end)

※ null 判定法は、上記の様にMySQLでは3通りの式が使える。
a と b は完全一致、cカラムは、like検索用
ストアドにするまでもないとおもうけど、プリペアード文にして、:x :y :z を代入してやればよい

ストアドプロシージャ内で、テーブル名やカラム名など識別子を動的に変更することはできません。
create 時に、構文チェックが行われ、テーブル名やカラム名が確定していないとエラーになります。変数を使えるのは、識別子以外のデータ値のみ。
静的select文で、あるデータがnull や空文字列ならそのカラムは条件に使わないようにするなら、where句は次の様に書くとよい

where (case when :x is null or :x ='' then 1 else `a` <=> :x end)
and (case when null <=> :y or :y ='' then 1 else `b` <=> :y end...続きを読む

QMySQLで改行を含む文の登録のしかた(改行コード

MySQLで改行を含む文を登録したいんですが、改行を改行コードに書き換えて登録したいです。
改行コードはどのように書けばいいですか?

登録したい文:
あいうえお
かきくけこ
さしすせそ

Aベストアンサー

改行コードは¥nで登録すれば良いです。


人気Q&Aランキング

おすすめ情報