私のバッチファイルには、次のようなものが含まれます:
set MUSER=root
set MPASS=xprd123
set MHOST=172.33.49.55
set DB=DBName1
set MBIN=C:\Program Files\MySQL\MySQL Server 5.5\bin
set scriptpath=D:/Graph_draw/ASSET_Creation/EXTERNAL/MYSQL_STATS_COLLECTOR/foldrname1
"%MBIN%\mysql.exe" -u"%MUSER%" -p"%MPASS%" -h "%MHOST%" "%DB%" -e "set @2:='%scriptpath%'; source DBQuery1.sql;"
DBQuery1.sql の内容は次のようになります。
SELECT 'INNODB_OS_LOG_WRITTEN','QUESTIONS'
UNION
select MAX(IF(variable_name = 'INNODB_OS_LOG_WRITTEN', VARIABLE_VALUE, NULL))
AS INNODB_OS_LOG_WRITTEN, MAX(IF(variable_name = 'QUESTIONS', VARIABLE_VALUE, NULL))
AS QUESTIONS from information_schema.GLOBAL_STATUS INTO OUTFILE '@2/Stats.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
これが DBQuery1.sql 内の SELECT クエリにパスを渡す方法かどうかはわかりません。
このコードは機能していません。
私が得ているエラーは次のとおりです。
ERROR 1 (HY000) at line 1 in file: 'DBQuery1.sql': Can't create/write to file 'C
:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.5\Data\
@2\Stats.csv' (Errcode: 2)
バッチ ファイルへのパスの受け渡しに関する他の投稿を見ましたが、何を試しても、この問題を解決できません。
バッチ ファイルを実行すると、パスが sql ファイルに渡されているかどうかがわかりません。また、パスが渡されている場合は、@2 にパスが渡されていないのはなぜですか。
誰でも親切にこれを手伝ってもらえますか。
アップデート :
上記の詳細に追加すると、渡されたパスが sql ファイルで受信されることがわかりました。
次のように変数出力を出力しました。
**SELECT @2;**
SELECT 'INNODB_OS_LOG_WRITTEN','QUESTIONS'
UNION
select MAX(IF(variable_name = 'INNODB_OS_LOG_WRITTEN', VARIABLE_VALUE, NULL)) AS INNODB_OS_LOG_WRITTEN,
MAX(IF(variable_name = 'QUESTIONS', VARIABLE_VALUE, NULL)) AS QUESTIONS
from information_schema.GLOBAL_STATUS
INTO OUTFILE '@2\Stats.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n';
私が得た出力は次のとおりです。
+------------------------------------------------------------------------+
| @2 |
+------------------------------------------------------------------------+
| D:/Graph_draw/ASSET_Creation/EXTERNAL/MYSQL_STATS_COLLECTOR/foldrname1 |
+------------------------------------------------------------------------+
ERROR 1 (HY000) at line 2 in file: 'DBQuery1.sql': Can't create/write to file 'C
:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.5\Data\
@2\Stats.csv' (Errcode: 2)
これは、@2 が '@2\Stats.csv' の値を取得していないことを意味しますが、SELECT @2; SQLで値を取得しています。
何か助けはありますか?