2012-08-07 4 views

Odpowiedz

8

API wydaje się nie mieć żadnej funkcji zrzutu (http://www.sqlite.org/capi3ref.html), ale można skonstruować swój zrzut przez:

  • Tworzenie nowej funkcji, która wykorzysta swój wynik bufora sqlite3_exec() lub sqlite3_get_table() i zrzucić je do pliku *

  • użyj funkcji zrzutu zawartych w kodzie źródłowym SQLite, można go znaleźć w (shell.c).

Edit: Dodanie tej próbki

/* TODO : This is just a sample code, modify it to meet your need */ 
void select_and_dump_sqlite3_table(sqlite3 *dbh) 
{ 
    FILE *dump_file; 
    int i; 
    sqlite3_stmt *stmt; 

    dump_file = fopen(path_to_dump_file, "w"); 
    if (dump_file == NULL) { 
     /* Error handling with errno and exit */ 
    } 

    sqlite3_prepare_v2(dbh, "SELECT name, address, phone FROM Person", 
         0, &stmt, NULL); 
    /* dump columns names into the file */ 
    for (i = 0; i < 3; i++) { 
     fprintf (dump_file, "%30s | ", sqlite3_column_name(stmt, i)); 
    } 
    printf ("\n"); 

    /* Dump columns data into the file */ 
    while (SQLITE_ROW == sqlite3_step(stmt)) { 
     for (i = 0; i < 3; i++) { 
      fprintf (dump_file, "%30s | ", sqlite3_column_text (stmt, i)); 
     } 
     printf ("\n"); 
    } 
    /* We're ready to leave */ 
    sqlite3_finalize (stmt); 
} 
+0

Sam mnie kopiesz - "Jak emulować zachowanie tego narzędzia C, że mam kod źródłowy w C lub C++?" Duh. :) – dlanod

+0

@dlanod: i Dodano przykładowy kod do odpowiedzi – TOC

3

można zrobić SELECT * FROM sqlite_master uzyskać wszystkie tabele i indeksy (każdy wiersz zawiera kolumnę type który będzie 'table' na stoły i 'index' dla indeksów oraz kolumnę sql który zawiera instrukcję SQL używane do tworzenia tej tabeli/index).

Następnie dla każdego z tabeli, w sqlite_master, SELECT * od nich (po sqlite_master rząd zawiera kolumnę name) i zapisu wszystkie dane w tablicach.

Zobacz strony SQLite FAQ i command line shell, aby uzyskać więcej informacji.

0

nie wiem, czy są wstępnie wykonane narzędzia dla niego, ale można go realizować siebie.

Najpierw pobierz schemat, odczytując tabelę wzorcową. Następnie będziesz miał schemat bazy danych (nazwy tabel i kolumny). Będziesz mógł automatycznie odczytać wszystkie dane i skonstruować dla niego SQL. To nie powinno być zbyt trudne do wdrożenia.

Powiązane problemy