Beliebt

wie vermeide ich cross join? - Windows, Batch, Batch-Datei, MySQL

Ich m├Âchte Tabellendaten mithilfe einer Batch-Datei aktualisieren / ersetzen. Und ich speichere old_data in old.txt-Datei und new_data in new.txt-Datei.

old.txt:
101
India

new.txt:
1001
0891

Und hier ist mein Batch-Skript: demo.bat

@echo off
for /f "tokens=1* delims= " %%a in (old.txt) do (
for /f "tokens=1* delims= " %%b in (new.txt) do (

mysql -u root -p tiger -host localhost -database empsrc -e "update table_name set col_name="%%b" where col_name="%%a""

)
)
pause

Wenn ich die obige Batch-Datei ausf├╝hren

101 is replaced with 1001 and
india is also replaced with 1001

Aber meine erwartete Ausgabe ist

101 is replaced  with 1001
India should be replaced with 0891

Wie kann ich dieses Problem l├Âsen? kann mir bitte jemand helfen

Antworten:

1 f├╝r Antwort Ôäľ 1

Die FOR-Befehle werden ineinander ausgef├╝hrt, wobei die folgenden Kombinationen erstellt werden:

101, 1001
India, 1001
101, 0891
India, 0891

Sie m├Âchten dann eine Schleife, die einen Eintrag aus jeder Datei einliest F├╝hren Sie den Code aus.

Beyogen auf diese Antwort, Hier ist ein Skript, das die Zeichenfolgen paarweise wiedergibt:

@echo off
setlocal EnableDelayedExpansion
Rem First file is read with FOR /F command
Rem Second file is read via standard handle 3
3< old.txt (for /F "delims=" %%a in (new.txt) do (
Rem Read next line from file2.txt
set /P line2=<&3
Rem Echo lines of both files
echo %%a,!line2!
))

Hier ist die Ausgabe:

Bildbeschreibung hier eingeben