0

localhost にデータベースがあり、バッチ スクリプトを使用してデータを MySQL データベースに入れる必要があります。これは可能ですか?これらの値は .txt ファイルにありますが、これは機能しません。

ここに私のスクリプト全体があります:

@echo on
setlocal ENABLEDELAYEDEXPANSION
set vidx=0
for /f "tokens=*" %%A in (C:\Users\Diana\Desktop\names.txt) do (
    SET /A vidx=!vidx! + 1
    snmpwalk -v 2c -c root %%A .1.3.6.1.2.1.25.3.3.1.2 > C:\Users\Diana\Desktop\cpu.txt
    snmpwalk -v 2c -c root %%A .1.3.6.1.2.1.25.5.1.1.2 > C:\Users\Diana\Desktop\ramvid.txt
    snmpwalk -v 2c -c root %%A .1.3.6.1.2.1.25.2.2 > C:\Users\Diana\Desktop\ram.txt
)

for /f "tokens=4" %%B IN (C:\Users\Diana\Desktop\ram.txt) DO echo %%B >> C:\Users\Diana\Desktop\ramfiltruotas.txt
for /f "tokens=4" %%B IN (C:\Users\Diana\Desktop\cpu.txt) DO echo %%B >> C:\Users\Diana\Desktop\cpufiltruotas.txt

for /f "tokens=4" %%a in (C:\Users\Diana\Desktop\ramvid.txt) do set /a used+=%%a 
echo !used! > C:\Users\Diana\Desktop\naujas.txt

for /f "tokens=4" %%c in (C:\Users\Diana\Desktop\ram.txt) do set /a total=%%c
set /a ramai=(%used%*100)/%total%
echo %ramai% > C:\Users\Diana\Desktop\naujas2.txt

for /f "tokens=4" %%d in (C:\Users\Diana\Desktop\cpu.txt) do set /a e+=%%d
set /a cpu=(%e%/4)
echo %cpu% > C:\Users\Diana\Desktop\naujas3.txt

mysql --host=localhost --user=root --password= --database=database <
    INSERT INTO server (cpu, ram)
    WHERE ('server_name' LIKE '192.168.95.139'
    VALUES (%cpu%,%ramai%)
4

1 に答える 1

0

私は目が覚めたばかりで、まだコーヒーを飲んでいませんでしたが...あなたの挿入ステートメントのwhere句は意味がありません。試す:

INSERT INTO server (cpu, ram , server_name )
VALUES (%cpu%,%ramai%,'192.168.95.139')

代わりは。これは、%cpu% と %ramai% が正しい値に置き換えられ、cpu と ram がデータベースの数値型であることを前提としています。これらが文字列型の場合は、一重引用符を追加します。例: ...VALUES('%cpu%','%ramai%','192.168.23.139')

新しい行を挿入する代わりに既存の行を更新したい場合は、次のようになります

UPDATE server 
SET cpu=%cpu%, ram=%ramai%
WHERE server_name = '192.168.95.139'
于 2013-05-30T04:15:29.660 に答える