windows - Sådan oprettes et filnavn ved hjælp af MySQL eller batch-fil, hvor en del af filindholdet skal være i navnet?

Indlæg af Hanne Mølgaard Plasc

Problem



OK, her er hvad jeg forsøger at.


Ved hjælp af MySQL kommandolinje kører jeg et script og gemmer derefter dataene som denne:


mysql -h DATABASE -u yyyy -pxxxx < E:/Step\_2.sql > E:/OUTPUT\_YYYY\_QQ.csv


Nu, enten jeg bruger MySQL eller en Windows-batch-kommando, vil jeg have YYYY og QQ til at være en bestemt værdi. Det er dog ikke den aktuelle dato. I dette eksempel ønsker jeg, at YYYY skal være 2017 og QQ skal være Q4.


Jeg har fleksibilitet til enten:



  1. Opret en ny tabel i SQL med værdierne i den, hvis det er nødvendigt. Derefter med hjælp køre en kommando for at bruge disse værdier som en del af filnavnet.

  2. Eller jeg kan placere en fil på serveren et sted for at 'referere' for at få fat i dataene og placere det i filnavnet.



nogen tanker?

Bedste reference


Her har jeg lavet et shell script kaldet 'test.sh', som vil generere filnavnet dynamisk, men alt hvad du behøver for at konvertere dette shell script til Windows-batch. Det er en ide til dig som i din kommentar.


test.sh


file\_name=$(mysql -N -hlocalhost -uvivek -pvivek -e "select concat('OUTPUT\_',year(date\_column),'\_Q',quarter(date\_column),'.csv') file\_name from table\_name")
mysql -hlocalhost -uvivek -pvivek </home/vivekanand/vivek/stack/test.sql >/home/vivekanand/vivek/stack/$file\_name


Efter at have kørt scriptet fik jeg filen oprettet som nedenfor med korrekt output af SQL-fil 'test.sql'


-rw-rw-r-- 1 vivekanand vivekanand 14535 May  7 13:56 OUTPUT\_2017\_Q4.csv