Kopírování jednoho řádku v tabulce

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Hafran
Člen | 121
+
0
-

Zdravím,
je nějak možné v nette\database snadno zkopírovat řádky z jedné tabulky do druhé? Nebo je musím nahrát z jedné a druhým dotazem rozebrat a vložit?

Kvido
Člen | 6
+
0
-

Dá se to udě+lat takto:
1/ v levém sloupci klikni 2× na název tabulky, z níž budeš kopírovat později konkrétní řádek.
2/ objeví se ti vpravo nahoře název té tabulky, poté klikni na záložku EXPORT. Tím označenou tabulku vyexportuješ někam na svůj pevný disk do adresáře, export bude v soubor.sql.
3/ Pak tento vyexportovaný soubor otevři v Poznámkovém bloku nebo editoru HTML PSPadu.
4/ Vyber příslušný řádek, který chceš kopírovat (CTRL+C).
5/ Nyní se vrátíš do DB a klikni opět vlevo v seznamu tabulek na konkrétní tabulku, kam budeš řádek vkládat. Opět se ti název objeví vpravo nahoře v druhé části okna.
6/ Klikni na záložku SQL a do prázdného okna vlož ten řádek (CTRL+V). Zadej Potvrdit či OK a máš hotovo.

Pilda
Člen | 52
+
0
-

Kvído on asi myslel jak to udělat pomocí nette a né ručně. Ale i kdyby to dělal ručně, tak by bylo asi lepší si ten vyexportované dotaz zkopírovat rovnou do schránky a ne to zbytečně někam ukládat. A také nemusí používat tu samou aplikaci pro manipulaci s DB jako ty. Třeba tam ani žádný export nemá. :)

Kvido
Člen | 6
+
0
-

Jo, to máš recht, rychlejší je přes schránku. Já jen, že takhle s tím může dále pracovat, takže to není zbytečné… hm. Poznámkový blok má každý. A pokud tu pracuje už skoro jako programátor, tak by měl mít ve výbavě aspoň PSPad, jinak vážnou práci neudělá. Nebuď měkota…Pilda! Cha.
Aplikace pro DB. Drtivá převaha webhostingu používá phpMyadmin

saimons
Člen | 293
+
0
-

Slo by to udelat vnorenym selectem. Vnoreny udela select a vnejsi pak vysledky ulozi pres insert nebo update. Muzes si to napsat jak presn \Nette\Database\Connection nebo i rovnou pres query(‚..‘), kde data nebudou putovat pres php, ale udela se to jen v ramci DB.

Hafran
Člen | 121
+
0
-

saimons napsal(a):

Slo by to udelat vnorenym selectem. Vnoreny udela select a vnejsi pak vysledky ulozi pres insert nebo update. Muzes si to napsat jak presn \Nette\Database\Connection nebo i rovnou pres query(‚..‘), kde data nebudou putovat pres php, ale udela se to jen v ramci DB.

jasný došel jsem k tomuhle

$this->db->exec("INSERT INTO Ads SELECT * FROM Ads2control WHERE id_order = 5");

jen jsem myslel jestli to nemá Nette ještě nějak vychytaněji. Třeba příkazem copy() který by ošetřil i duplicitu primary klíčů. Ale už jsem asi z Nette zmlsanej

saimons
Člen | 293
+
0
-

Pokud mas dobre nastavenou DB tak ti nepovoli duplicity na primarnim klici, ten je z podstaty unikatni. Pokud to potrebujes na jiny sloupec tak je to mozne na nej nastavit. Potom je mozne odchytavat vyjimky.

try {
    $this->context->registraceModel->insertUser($form->values);
    $this->flashMessage($this->context->registraceModel->flashes);
    $this->redirect(':Public:Home:');
} catch (\PDOException $e) {
    if ($e->getCode() == 23000) {
        $this->flashMessage('Uživatel s tímto emailem už existuje.');
    }
}

Podle kodu, se da poznat co to bylo za chybu.

Editoval saimons (13. 2. 2012 13:43)