ich mit einer SQL-Tabelle haben, die Datensätze enthält, die hierarchisch organisiert sind wie folgt:Ordnerstruktur im Batchverfahren erstellen SQL-Skript Ausgabe
ID Item OtherColumns ParentID
1 a blah NULL
2 b blah 1
3 c blah 2
4 d blah 3
5 e blah 3
6 f blah 3
7 g blah 4
8 h blah 4
9 i blah 4
10 j blah 4
11 k blah 6
12 l blah 6
13 m blah 6
14 n blah 6
Grafisch ist die Hierarchie
a
--b
----c
-------d
----------g
----------h
----------i
----------j
-------e
-------f
----------k
----------l
----------m
----------n
Ich habe eine SQL Skript, das einen ParentID-Parameter akzeptiert und alle untergeordneten Elemente für diesen Knoten zurückgibt.
Ich nenne das Skript aus einer rekursiven Funktion in einer Batch-Datei und drucken Sie die Elemente in der Reihenfolge ihrer Struktur, aber ich bin mir nicht sicher, wie ich eine Ordnerstruktur erstellen, die dieser Spiegel
Meine Charge
@echo off
setlocal enabledelayedexpansion
set Id=1
call :CreateSubDirectories !Id! 1
goto eof
:CreateSubDirectories
for /f "tokens=1,2,*" %%i IN ('sqlcmd -S MyServer\MyInstance -d myDatabase -U myUser -P myPassword -i C:\Path\to\my\script.sql -v parentId^=%~1! -h -1') DO (
echo %%i
call :CreateSubDirectories %%i
)
:eof
endlocal
so druckt diese aus
a
b
c
d
g
h
i
j
e
f
k
l
m
n
aber wenn ich eine mkdir meiner Schleife hinzuzufügen war, alle Ordner auf dem gleichen Niveau schaffen würde. Wie kann ich damit die oben dargestellte Ordnerstruktur erstellen?
haben Sie einige CTE Code gibt bereits? – gbn
Ja, das SQL-Skript hat einen rekursiven CTE – SEarle1986