標題についてご教授下さい。

シェル内でpsqlコマンドから オプション c にて
BEGIN

DELETE

COPY xxx FROM xxx.sql

COMMIT

の流れでシェルコマンドを実行したいのですが、
いい方法ありますでしょうか。

もちろんエラーハンドリングもしたいです。
COMMIT前に エラーがあったらROLLBACK したいです。

シェルだと難しいのでしょうか。

A 回答 (1件)

AUTOCOMMITをOFFにすればよさそうです。



http://heppoen.seesaa.net/article/147918073.html
    • good
    • 0
この回答へのお礼

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

AUTOCOMMITをoffにした場合、
シェルの一行で、
全てを簡潔させなければいけないんですよね。

psql -hlocalhost example DELETE FROM test | \copy test FROM test.sql

上記の様に記述したいです。

お礼日時:2013/07/03 10:24

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

QMS DOS Copyコマンドについて

MS DOSのバッチファイルを作成しようと思って次のように作成して実行しましたら上手くいきました。
copy C:\SSD F:\SSD
次にProgram Filesにあるフォルダーを次のコマンドで実行しましたがうまくいきません。
copy C:Program Files\SSD F:\SSD
どうしてでしょう教えて下さい。

Aベストアンサー

copy "C:Program Files\SSD" F:\SSD
と"で囲みます。


コマンドは、スペース等の文字で、引数(copyの場合なら、ファイル名等)を区別します。

copy C:\SSD F:\SSD
の場合
コマンド: copy
引数1: C:\SSD
引数2: F:\SSD
となります。これで「 引数1を引数2へコピー」とできるわけです。

ところが
copy C:Program Files\SSD F:\SSD
の場合
コマンド: copy
引数1: C:Program
引数2: Files\SSD
引数3: F:\SSD
となってしまいます。

このような場合、""で囲むと、その間は一つの引数だと解釈してくれます。

QCOPYコマンドで結合すると余計な改行コードができる

batファイル内でCOPYコマンドで2つのファイルを結合するコードを書いています。
しかし、中身が空の0KBのデータ同士を結合すると、改行データが1つ含まれる1KBのデータが作成されてしまいます。
この改行データの作成を防ぐにはどのようなコマンドを書けばよろしいでしょうか。どなたかご存知の方がいれば宜しくお願い致します。

【2つのファイルを用意】
test01.txt 0KB
test02.txt 0KB

【結合】
COPY test*.txt test.txt

【改行コードを含むテキストが作成される】
text.txt 1KB

Aベストアンサー

copy /B *.txt test.txt
としてください。
copy /? でcopy コマンドのヘルプが表示されますので詳細はそちらを参照ください。

Qダイアルアップ接続時のSMTP(メール送信)コマンドハンドリングで困っています。

ダイアルアップ接続時のSMTP(メール送信)コマンドハンドリングで困っています。

プログラム中でダイアルアップによりインターネットに接続しSMPTコマンドを発行してメールを送信しようとしています。

DATA送信後のサーバー応答コード250を受信しQUITコマンドを送信、その後にサーバーの応答として221が戻ってきた時点でソケットを切断し電話線を切断しています。にもかかわらずなぜかまだメール送信中で送信中に切断されたとのことでメールが送れません。

何が問題でどう対処すればよろしいのでしょうか?
アドバイスをよろしくお願いいたします。

Aベストアンサー

アンチウィルスソフトのメールスキャン機能が有効になっていませんか?
有効になっている場合は無効にするとどうなるでしょうか。

QDOSコマンド COPY(複数ファイルをまとめる)

DOSコマンドで、複数ファイルをまとめるのに
COPYコマンドを使用しています。

まとめたファイル上にコメント文を加えたいのですが
どうすればできるのでしょうか?

下記は、a.txtとb.txtをまとめて、c.txtにしています。
copy a.txt + b.txt c.txt だと、
そのままデータがつながってしまい、コメント文を
入れることができません。

[a.txt]
aaa
[b.txt]
bbb
 ↓
[c.txt]
"Input A.txt"
aaa
"Input B.txt"
bbb

Aベストアンサー

自分も echo と type を組み合わせる事をお奨めします。

でも、ファイル名を何度も入力するのが面倒でしょうからバッチファイルを作ってしまいました。
CT.bat とか ChainText.bat とでもしてください。
 echo "Input %1" > %3
 type %1 >> %3
 echo "Input %2" >> %3
 type %2 >> %3

これで、
 CT a.txt b.txt c.txt
を実行すればOKです。
画面に実行中のテキストが出るのが邪魔であれば echo off してください。

Qシェルのfindコマンドであるディレクトリ以外のファイルを検索

ホームディレクトリにある.(例.dtや.atok)ディレクトを検索対象から外し尚且つ、*aa*のファイルを検索するにはどうしたら良いでしょうか?

find . -type d -name .dt -prune -o -print | xargs grep "*aa*"
でいろいろやってみましたができませんでした。

OS:HP-UX K-Shellです
どうぞ宜しくお願いいたします。

Aベストアンサー

安易な手としては、

find . -type f -print | grep -v './.atok/' | xargs grep "*aa*"

"*aa*" は正規表現として正しくないですが、意図したことがわからないのでそのままにしてあります。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報