Jump to content

PostgreSQL + *.BAT


nock
 Share

Recommended Posts

Sveicināti.

 

Priekšvārds/galvenā problēma

Ar datu bāzēm es sāku strādāt vakar pēc vairāk nekā pusotra gada pauzes. Bet nav cita cilvēka, kas to tagad varētu izdarīt un man nesanāca atrast gatavu risināju tam, ko man vajag.

 

Problēma

 

Man nepieciešams uzrakstīt pgScript funkciju, kas tiks automātiski palaista reizi mēnesī, izveidos tabulu ar sintaksi DATI_GADS_MĒNESIS un pārnesīs datus no citas datu bāzes šajā. T.i. katru mēnesi man tiks iztukšota izmantojamā datubāze un iepriekšējā mēneša dati tiks glabāti atsevišķā tabulā.

 

Piemēram tam ir jāizskatās šādi:
CURR_DATA
DATA_2012_01
DATA_2011_12
DATA_2011_11
DATA_2011_10

 

Pašlaik tas, kas man ir izskatās šādi:
DECLARE @T, @M, @Y; -- Variable names begin with a @
  SET @M = '01';
  SET @Y = '2012';
  SET @T = 'DATA_' + CAST (@Y AS STRING) + '_' + CAST (@M AS STRING);
  CREATE TABLE @T (uid integer primary key, uname character varying[255]);

Jā - @M un @Y ierakstās ar roku.

 

Jautājums

Kā panākt, lai mainīgie @M un @Y tiktu automātiski ņemti no tekošā(iepriekšējā) gada/mēneša?

 

Tā, nolēmu šo visu veikt nevis SQL komandā, bet iznest uz batņiku. Taga jautājums ir tāds, kā pielikt komandai *.bat variablu?

Man vajag lai ir kaut-kas līdzīgs šim:

 

@echo off

set var=%DATE:~-4%

"C:\PostgreSQL\9.1\bin\psql.exe" -c "CREATE TABLE " %var% " (uid integer primary key, uname character varying);" -h localhost -U postgres -d postgres -p 5432

echo

pause

=

 

Tam būtu jāizveido tabulu kuras nosaukums ir tekošais gads. Bet šitā variablu ievietot nevar. Kādi vēl ir varianti?

Labots - nock
Link to comment
Share on other sites

Pagūglē pēc current_date un to_char funkcijas. piemēram

select to_char(current _date - 28,'MM') into @M;

Varētu darīt kaut ko interesantu. Varbūt. Protams tas būtu ātrāk ātrāk atrodams pajautājot googles mātei.

Link to comment
Share on other sites

Viss sanāca. Tēmu var slēgt ciet :)

 

UPDATE

 

 

Tā, nolēmu šo visu veikt nevis SQL komandā, bet iznest uz batņiku. Taga jautājums ir tāds, kā pielikt komandai *.bat variablu?

Man vajag lai ir kaut-kas līdzīgs šim:

 

@echo off

set var=%DATE:~-4%

"C:\PostgreSQL\9.1\bin\psql.exe" -c "CREATE TABLE " %var% " (uid integer primary key, uname character varying);" -h localhost -U postgres -d postgres -p 5432

echo

pause

=

 

 

Tam būtu jāizveido tabulu kuras nosaukums ir tekošais gads. Bet šitā variablu ievietot nevar. Kādi vēl ir varianti?

 

NOVECOJIS:

Man sanāk šitā

Select extract(year from current_date);

 

izdod tekošo gadu.

 

select extract(year from current_date) into @Y;

 

Izpildot kā pgScript lamājas uz sintaksi

 

select extract(year from current_date) into

ERROR: syntax error at end of input

LINE 1: select extract(year from current_date) into

 

Ja mēģinu

SET @Y = extract(year from current_date);

Saņemu syntax error - unexpected character.

 

Kā tad pareizi mainīgajā ierakstīt? Vai arī deklarējot jānorāda tā tips? Pašlaik man ir vienkārši DECLARE @T, @M, @Y;

Labots - nock
Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...