-2

MySQL は初めてで、bash スクリプトから何かをテーブルに挿入したいと考えています。Google からいくつかの方法が見つかりました。単純なコマンド select * from foo では機能しますが、私の挿入では機能しません。

#!/bin/bash

qry="INSERT INTO  `video`.`asdf` (`DB_ID` , `LNX_ID` , `STIME` , `ETIME` , `TEXT` ) VALUES ( NULL , '5', '00:00:41.900', '00:00:49.600', 'Na leteckej v23423.');"

mysql --host=localhost --database 'video' --user=user --password=password << eof
$qry
eof

どうもありがとう。

4

1 に答える 1

1

エラー メッセージが表示されない場合は、 bash がバッククォート内でコマンドを実行しようとしているとすぐに推測できqryますvideo

$ echo "This will show the date if I do `date` in backticks"
> This will show the date if I do Sat Jun 29 22:09:59 CDT 2013 in backticks

二重引用符で囲まれた文字列内のバッククォートをバックスラッシュでエスケープして、bash がそれらを評価しようとするのを防ぎます。

qry="INSERT INTO  \`video\`.\`asdf\` (\`DB_ID\` , \`LNX_ID\` , \`STIME\` , \`ETIME\` , \`TEXT\` ) VALUES (    NULL , '5', '00:00:41.900', '00:00:49.600', 'Na leteckej v23423.');"

ただし、列名とテーブル名はいずれも予約済みのキーワードではないため、引用符で囲む必要はまったくありません。

qry="INSERT INTO  video.asdf (DB_ID , LNX_ID , STIME , ETIME , TEXT) VALUES (NULL , '5', '00:00:41.900', '00:00:49.600', 'Na leteckej v23423.');"

もう 1 つの方法は、外側の文字列に一重引用符を使用することですが、ここで説明されているように、挿入された列の値に一重引用符を維持するために、非常に扱いにくい引用符が必要になります。

于 2013-06-30T03:02:06.630 に答える