2010-08-05 7 views
0

Iam, имеющий базу данных в Sqlite3. Я выполняю все свои действия, написав приложение в Linux C (API: sqlite3_exec). В настоящее время Iam пытается экспортировать базу данных в текстовый файл. Может ли кто-нибудь предлагать запросы запроса к тому же.Экспорт таблицы sqlite3 в текстовый файл из программы C

ответ

3

Это не совсем то, что вы ищете, но довольно близко. Это выведет ваш запрос в формате JSON в outbuf, я не включил b64encode() в фрагмент.

int sqlite3_json(sqlite3_stmt *s, char *outbuf, size_t blen, size_t *used) 
{ 
    int nuse=0; 
    int res,i=0,ncolumn=sqlite3_column_count(s); 

    nuse+=snprintf(outbuf+nuse,blen-nuse,"[\n"); 
    while(SQLITE_ROW==(res=sqlite3_step(s))) { 
     nuse+=snprintf(outbuf+nuse,blen-nuse, "\t{\n"); 
     for(i=0;i<ncolumn;++i) { 
      nuse+=snprintf(outbuf+nuse,blen-nuse, 
        "\t\t\"%s\" : ", sqlite3_column_name(s,i)); 
      switch (sqlite3_column_type(s,i)) { 
       case SQLITE_INTEGER: 
        nuse+=snprintf(outbuf+nuse,blen-nuse, 
          "%d,\n", sqlite3_column_int(s,i)); 
        break; 
       case SQLITE_FLOAT: 
        nuse+=snprintf(outbuf+nuse,blen-nuse, 
          "%e,\n", sqlite3_column_double(s,i)); 
        break; 
       case SQLITE_TEXT: 
        nuse+=snprintf(outbuf+nuse,blen-nuse, 
          "\"%s\",\n", sqlite3_column_text(s,i)); 
        break; 
       case SQLITE_BLOB: 
        nuse+=snprintf(outbuf+nuse,blen-nuse,"\""); 
        nuse+=b64encode((char*) sqlite3_column_blob(s,i), 
          sqlite3_column_bytes(s,i), 
          outbuf+nuse,blen-nuse); 
        nuse+=snprintf(outbuf+nuse,blen-nuse,"\",\n"); 
      } 
     } 
     nuse-=2; // trailing ',\n' 
     nuse+=snprintf(outbuf+nuse,blen-nuse, "\n\t},\n"); 
     if(blen < nuse) { 
      printf("buffer overflow\n"); 
      break; 
     } 
    } 
    if(i&&res==SQLITE_DONE) nuse-=2; //trailing ',\n' 
    nuse+=snprintf(outbuf+nuse,blen-nuse,"\n]\n"); 
    if(used) *used=nuse; 
    return res; 
} 
+0

Я понимаю после более тщательного чтения, что это не совсем то, что вы ищете. Вам нужно также http://www.sqlite.org/faq.html#q7 – Erik

Смежные вопросы