Autor | Zpráva | ||
---|---|---|---|
Miri Profil * |
#1 · Zasláno: 27. 2. 2013, 12:28:51
Ahoj, snažím se převést záznamy ze staré (chybné) databáze do nové. Ve staré nebyly vedeny cizí klíče a podobně. Bohužel se tam vyskytují řádky, které nemají svého předka a sql hlasí chybu.
INSERT INTO `menu_has_produkt` (`menu_idmenu`, `produkt_idprodukt`) VALUES (22, 15), (11, 16), (17, 15), (20, 15), //například chybný řádek (60, 14), .... (tisíce zánamů) (8, 155); Nevíte jak docílit toho, aby se chybné řádky vynechaly? Mockrát díky za odpověd Míra |
||
Alphard Profil |
#2 · Zasláno: 27. 2. 2013, 12:32:04
Nemůžete chybné řádky smazat?
|
||
Miri Profil * |
#3 · Zasláno: 27. 2. 2013, 12:35:12
Tahle možnost mě napadla, ale budu pro to muset dělat speciální výběry v sql, kde zjistím jen ty řádky, které jsou správné a ostatní nějak smažu, jenže databáze je vcelku obsáhlá a pro každou tabulku budu muset dělat zvlášt jiný dotaz.
Myslel jsem jestli neexistuje v SQL něco jako IF DONT EXIST ROW .... :-) |
||
Alphard Profil |
Konstrukce
delete from ... where id not in (select id from ...) není tak složitá.
Jinak jde nastavit SET foreign_key_checks = 0; , ale radši bych to opravil.
|
||
Miri Profil * |
#5 · Zasláno: 27. 2. 2013, 12:57:37
Něco takového jsem zkoušel ale nezadal jsem not in, každopádně funguje, takže jeste jednou díky. A když už jsme v tom, nevíte jak vymazat duplucitní záznamy z této tabulky ? Našel jsem vždy návod jen na smazání duplicitních hodnot jednoho sloupce.
|
||
Alphard Profil |
#6 · Zasláno: 27. 2. 2013, 13:09:02
|
||
Kajman Profil |
#7 · Zasláno: 27. 2. 2013, 19:15:28
A nestačí u prvního problému použít ignore?
INSERT IGNORE INTO ... |
||
Časová prodleva: 11 let
|
0