Databáze > Ostatní DB

SQLite a DBase

(1/1)

PetrB0:
Ahoj,
pro přístup na starší data v DBase IV formátu používám kombinaci SQLite a UNIDac. Což celkem obstojně funguje.
Můj problém je v tom, že chci do jedné tabulky přidat index. Použil jsem SQLite syntaxi (https://www.techonthenet.com/sqlite/indexes.php):

--- Kód: ---CREATE INDEX obchody_evm_idx ON obchody(VALUTA);

--- Konec kódu ---
Když ovšem dotaz, který to obsahuje spustím, tak mi to vrátí chybu: FieldName expected.
Zkusil jsem to včetně testu na existenci

--- Kód: ---CREATE INDEX IF NOT EXISTS obchody_evm_idx ON obchody(VALUTA);

--- Konec kódu ---
a to mi vrátilo chybu: Table EXISTS not found.

Nevíte co s tím?

Díky

Pb


pf1957:
Ja bych si spustil consoli sqlite3.exe a podival se, jake indexy pro danou tabulku existuji, jestli jdou vytvorit a jesti ti bude fungovat pozadovany DML command tj. vzdy, kdyz se vyskytly u jakehokoli RDBMS podivnosti, tak jsem se obracel ke korenum tj. k nejake nativni konsoli, kde mezi mnou a driverem nestoji zadny skodic. Nevim, jestli to nejak nemenili, ale pred lety se dalo napsat:

--- Kód: SQL ---SELECT * FROM sqlite_master WHERE TYPE='index' AND tbl_name='VALUTA';a ten create index taky funguje:

--- Kód: SQL ---CREATE INDEX IF NOT EXISTS obchody_evm_idx ON obchody(VALUTA);Je mozne, ze to nefunguje kvuli nejakemu SQL parseru na urovni connectivity.

PetrB0:
Díky, on ten parser je fakt nějakej divnej. Obecně se mu nelíbí konstrukce If exists... Teď zrovna jsem zkoušel DROP TABLE IF EXISTS a tam mi suše napsal, že tabulka IF neexistuje.
Budu se s tím muset nějak poprat. Potřebuji načíst data a vytvořit jednoduchou tabulku (případně zrušit její předchozí verzi). Ale možná se na tu tvorbu vybodnu a půjdu cestou nějakého csv nebo něčeho podobného.

pf1957:

--- Citace: PetrB0  26-08-2020, 16:48:24 ---Obecně se mu nelíbí konstrukce If exists... Teď zrovna jsem zkoušel DROP TABLE IF EXISTS a tam mi suše napsal, že tabulka IF neexistuje.

--- Konce citace ---
Muzes to udelat na urovni tveho kodu, ze existenci zkontrolujes dotazem do tabulky sqlite_master a pak udelas v pripade potreby obyc. DDL command bez toho exists.

PetrB0:
Máš pravdu, došel jsem ke stejnému zjištění. Bohužel tam je více problémů dotazy, ale snad se tím v nějakém rozumném čase prokoušu. Jinak půjdu jinou cestou.

Díky za konzultaci.

Pb

Navigace

[0] Seznam témat

Přejít na plnou verzi