Adatbázis: SQL, XML DB

MYSQL arattábla online másolat egy szerveren.

Sziasztok.
A problémám a következő lenne.
Van egy fórum, aminek az ügyfél adatait szeretném máshol is felhasználni.
Biztonsági okokból (más csapat dolgozik a két projecten), illetve hogy a másik projekt véletlenül se tudja a fórum tábláit lelock-olni arra gondoltam, hogy az lenne a leg jobb megoldás, ha nem a fórum adattábláját olvasnám hanem annak egy másolatát.
A replikációról hallottam és egy helyen a cégnél a rendszergazda használja is két szerver között.
Ő azt mondta, hogy amit én szeretnék az csak trükközésekkel, két mysql futatásával lehet megcsinálni vele.
Nincs valami egyszerű módszer amivel egy szerveren beül lehet online másolatot készíteni az egyes táblákról (pl. egy másik adatbázisba)?

Természetesen a fórum mellett futó külön project csak olvasni szeretné az adatokat, azokat írni nem.

Előre is köszönöm a gyors segítséget.
Üdv:
Zoli

Insert triggerben select az érintett táblára (MySQL)

Sziasztok,

Insert előtt szeretném az új sor adatait összevetni a már meglévő adatokkal egy táblában.

A MUNKAFOLYAMAT táblán ülő before insert triggerben van a következő utasítás.

SELECT sum(mennyiseg)-new.mennyiseg INTO eredmeny FROM (SELECT munkafazisnev AS megnevezes,(mennyiseg*-1) AS mennyiseg FROM MUNKAFOLYAMAT WHERE rendeles=new.rendeles AND ablaknev=new.ablak AND munkafazisnev=new.munkafazisnev UNION ALL SELECT codice AS megnevezes,qta AS mennyiseg FROM FPPRO32COMMESSE,FPPRO32PREVENTIVOACCESSORI WHERE nome=nomecommessa AND FPPRO32COMMESSE.voce=FPPRO32PREVENTIVOACCESSORI.voce AND nome=new.rendeles AND label=new.ablak AND codice=new.munkafazisnev) AS T GROUP BY megnevezes;
...
IF eredmeny<0 THEN
...
END IF;
...

Felparaméterezve az utasítás hozza a kívánt eredményt.
Ugyanazon paraméterekkel a triggerben viszont NULL kerül a 'eredmeny' változóba, majd továbblép.

Mi a megoldás?

[Megoldva] MySQL Select a mezoben sortoresek

HalI!
Elorebocsatom, nagyon nem vagyok jo semmilyen SQL-ben, szoval keretik nem fikazni :)
Alap lekerdezest szeretnek konzolrol:

mysql -e 'select CUSTOMER.CUST_NAME , SERV_DOMAIN,SERV_START from SERVICE INNER JOIN CUSTOMER ON CUSTOMER.CUST_ID = SERVICE.SERV_CUST_ID where SERV_PAY_BEFORE="N" AND SERV_PAY_FREQUENCY=0 order by CUSTOMER.CUST_NAME ' tabla > ezek.txt

Ezt elkuldom egy levelben:
mail xy@xy.hu -s "ezek" < ezek.txt
Aki megkapja, berakna egy Excel tablaba. Csakhogy: a SERV_DOMAIN mezo tobb adatot is tartalmaz, sortoressel elvalasztva, ez laccik is a txt file-ban, sajnos, az Excel ugy veszi, hogy ez kulon mezo :(
Kb igy nez ki a mezo : "egyes ^\n kettes" es ez kerul Excelben egymas ala. (Hexaban: 0D 5C 6E a harom karakter, ami gondot okoz)

Hogy tudnam ezt ugy exportalni, hogy eltunjon a sortores (TAB a mezoelvalaszto, szoval lehetne SPACE a sortores helyett, vagy akar semmi) sed-del is probalkoztam, az is max. a "/n"-t tuntette el....

PHP + PostgreSQL

Van egy kis webes alkalmazasom ami postgresbol dolgozik. Nem vagyok elegedett a sebessegevel, szeretnek gyorsitani rajta. Most valami ilyesmi van benne amit szeretnel leroviditeni:


select * from table where....;

ami vegigturja az egesz DB-t, de aztan vegul csak az elso 100 (vagy valahany) talalat jelenik meg a bongeszoben. Szoval eleg lenne valami ilyesmi is:


select * from table where.... limit 100;

Ez sokat segit, viszont igy nem tudom kiirni, hogy a teljes adatbazisban hany talalat van! Pedig azt is szeretnem megjeleniteni (most meg is jelenitem). Persze megtehetnem, hogy ezutan meg futtatok egy "select count(*)..."-ot, de akkor nem nyertem semmit, hiszen at kell turni az egesz DB-t (reszben ujra).

Ket megoldas jutott az eszembe... vagyis egyik se megoldas meg, mert nem tudom, hogy lehetne oket megcsinalni, ha egyaltalan...

a) a PHP

pg_query

fuggvenye olyan, hogy nem ter vissza ameg a teljes select le nem futott. Nem lehetne valahogy a mar kikeresett rekordokat visszakapni (mondjuk a sorrend nem szamit) mikozben a select meg fut? Ettol a DB keres ugyan nem lenne gyorsabb, de a weben hamarabb latszana az eredmeny.

b) a

...limit 100

-as megoldas is jo lenne onmagaban, ha lehetne tudni, hogy a limit 100 elereseig a tablanak mekkora reszet kellett atnezni es ebbol megbecsulni, hogy az egesz DB-ben hany talalat lett volna (pontossag nem fontos). Vagyis ha az "alma"-ra keresek, amire a DB elso 2%-anak atnyalazasabol osszejon a 100 talalt, ott a limit leall, en meg ezt az eredmenyt felszorozva irnam ki, hogy hany alma van a teljes DB-ben. Le lehet valahogy kerdezni, hogy hol jart a select mikor a limit-hez ert? mOndjuk mi az utolso rekord sorszama?

SQL adatbázis megjelenítése HTML oldalakon

Sziasztok!

Nagy valószínűséggel bele kell fognom egy olyan projekt megvalósításába, amikor egy SQL (MsSql) adatbázis tartalmát dinamikusan meg kell jelenítenem egy HTML alapú alkalmazásban (sajnos) Windows felhasználói környezetben (Web böngészőben). Ugyanakkor a felhasználó által kezdeményezett akciókat le kell kezelnem. Így pl. olyanokat is, amikor az adatbázist kell írni. A megjelenítés során fontos lenne, hogy annyi elemet tudjak megjeleníteni, amennyi az adatbázisban ténylegesen van egy adott egységen belül.

Nos fogalmam sincs, hogyan induljak el, ugyanis elsősorban C, C++, és Java programozási tapasztalataim vannak.

Amennyire én sejtem szükségem lesz egy jó HTML editorra, és valamiféle programozási lehetőségre, ami biztosítja számomra, hogy az oldalak dinamikusan viselkedjenek, és az SQL adatbázishoz való hozzáférést is biztosítja.

Milyen eszközök szükségesek szerintetek egy ilyen jellegű feladat elkészítéséhez. Esetleg konkrét programokat is ajánlhattok hozzá! A tanulás nem gond. Hajlandó vagyok megtanulni a számomra új dolgokat.

[Szerk:]
Mivel többször felmerült kérdésként, ezért egy kicsit bővebben elmagyarázom, hogy miből is állna a projekt. Alapvetően egy hosszabb, "ráérős" feladatról van szó.
Van egy program a cégünknél, ami folyamatosan gyűjti a karbantartási adatokat. Ez egy VB-ben megírt Windows alkalmazás. Mivel sok a felhasználó, egyre inkább panaszkodnak a kollégák rá.
Első lépésben valami olyasmire gondoltunk, hogy az adatbázist használók munkáját megkönnyítsük webes felületen lehetővé akarjuk tenni a gyorsabb lekérdezéseket. Pl. egy karbantartó mérnök leül reggel a gépéhez, és megnézi, hogy milyen állások voltak a hozzá tartozó gépein. Ezt a lekérdezési mechanizmust szeretnénk pl. első lépésben megkönnyíteni. Aztán fokozatosan továbbfejlesztenénk a bonyolultabb lekérdezések irányába az igényeknek megfelelően. Aztán még további terv, hogy az állásidők felvitelét is szeretnék egyszerűsíteni pl. a sorvezető egérrel rákattint az adott gépre, és azt mondja, ez most megállt. Aztán a gépjavító karbantartó szintén rákattint, és akkor pedig kész a gép, és újra termelhet. Ezekből automatikusan fog számolódni az állásidő. Stb. ilyen apróságokra gondoltunk.

wamp

Szervusztok!
Gondoltam nyitok egy új témát, mert azért ez elkülönül talán a többitől
Konkrét gondom az az, hogy kevéssé kedvelt windows XP operációs rendszeremen szépen megbolondult a korábban joomlázásra próbált adatbázis, így vért izzadva újratelepítettem.
Telepítés után azt vettem észre, hogy a korábbi rendszer lekaparása ellenére a php.ini fájlt mindenáron a C:/windows könyvtárból szeretné olvasni a rendszer, nem pedig az általam beállított másik meghajtó egy könyvtáráról. Ugyanúgy nem tudom elérni, hogy az új telepítésben lévő libmcrypt.dll fájlt is az új telepítésből, ne pedig a c:/windows/system32 könyvtárból keresse.
Talán nem tudtam leszedni valahogy az előző rendszert? Minden fájlt töröltem pedig érzésem szerint. Meg tdudok valahogy győződni arról, hogy az esetleges létrehozott új adatbázisaimat nem a régi helye szerint menti?
Egyébként fizikailag hová ment az adatbázis?

Az apache servicces monitor szerint:
php-5.2.13
apache-2.2.15
mysql-5.1.44 (?) :)

Köszönöm szépen előre is, ha tudtok segíteni!
Valek

[Megoldva] PostgreSQL oszlonevek nagy betű használata

Első PostgreSQL adatbázisomat tervem és azt vettem észre, hogy a nagybetűt is tartalmazó nevek a dump fájlban idézőjelek közé vannak foglalva, ugyanúgy mint elírás esetén az ékezetes karaktereket tartalmazó mezőkkel tette.
részlet:
...
cima integer NOT NULL,
"postazasiCima" integer ,
...

Van bármilyen megkötést a nagybetűk használatára nézve ?

Ha ez későbbiek folyamán bármilyen gondot okozhat, akkor inkább átírom ezt a pár mezőnevet.

Mssql select kérdés

Sziasztok!

Adott két tábla:

első tábla:
datum |A |B
2010.01.01 |5 |NULL
2010.01.02 |6 |7

második tábla
datum |C |D
2010.01.01 |2 |7
2010.01.02 |1 |8
2010.01.03 |3 |4

a két táblából a következő eredménytáblára lenne szükségem:

datum |A |B |C |D
2010.01.01 |5 |NULL |2 |7
2010.01.02 |6 |7 |1 |8
2010.01.03 |NULL |NULL |3 |4

A két tábla használatával elő lehet állítani az eredmény táblát valahogy?
Vagy kell nekem egy harmadik tábla, ami tartalmazza az összes napot és ahhoz join-oljam a két táblát?

dátum tábla (pl):
datum
2010.01.01
2010.01.02
2010.01.03
...
...
...
2010.03.02

Ti hogyan oldanátok meg?
Köszi a válaszokat

Üdv,
bandorka

MySQL felhasználó létrehozás

Sziasztok!

Az lenne a problémám, hogy lenne egy root usernél butább felhasználóm, amivel felhasználókat akarok létrehozni a MySQL adatbázishoz, de nem sikerül.

A létrehozó user felhasználói jogai:
- CREATE
- RELOAD
- GRANT (igazából ez az, amit nem csinál meg)
- CREATE USER

Tökéletesen létrehozza az adatbázist:
CREATE database db
Létre is hozza a usert:
CREATE USER 'db'@'localhost' IDENTIFIED BY 'pass'

De ez az amit nem csinál meg arra hivatkozva, hogy nincs joga:
GRANT ALL PRIVILEGES ON db.* TO 'db'@'localhost'

Tehát a saját táblájához full hozzáférést szeretnék adni, és azt mondja nincs jogom :S
Ha pl ALL PRIVILEGES jogot adok az adatbázishoz a létrehozó useremnek, akkor meg tudja csinálni, de ebben az esetben már használhatnám a root usert is, mert ugyanaz a joga van és pont ez a cél, hogy a lehető legkevesebb joga legyen a feladat elvégzéséhez...
Valami ötlet, hogy mit rontok el?

Köszi!

[megoldva]postgresql: mezőméret nem értem

csinálok egy teszt táblát, amiben van egy fix 9 karakter széles mező, ebbe szeretném belerakni az id mezőt balról 0-val feltöltve 9 szélesen.
mit rontok el?

chartestdb=> create table test(id serial, m char(9));
CREATE TABLE
chartestdb=> insert into test (id) values (nextval('test_id_seq'));
INSERT 0 1
chartestdb=> insert into test (id) values (nextval('test_id_seq'));
INSERT 0 1

chartestdb=> select * from test;
id | m
----+---
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
(10 rows)

chartestdb=> update test set m=to_char(id,'000000009');
ERROR: value too long for type character(9)
chartestdb=> update test set m='123456789';
UPDATE 10
chartestdb=>