Как экспортировать файл SQLite в файл CSV в iPhone SDK - PullRequest
4 голосов
/ 11 января 2011

В моем приложении я хочу экспортировать файл базы данных SQLite в файл CSV ..

Не могли бы вы подсказать мне, как это сделать? Спасибо.

Ответы [ 2 ]

15 голосов
/ 11 января 2011

Во-первых, вам нужно убедиться, что вы используете FMDB для доступа к базе данных, потому что люди, использующие API-интерфейс SQLite C непосредственно в Objective-C, являются мазохистами.Вы можете сделать это следующим образом:

FMDatabase *db = [[FMDatabase alloc] initWithPath:@"/path/to/db/file"];
FMResultSet *results = [db executeQuery:@"SELECT * FROM tableName"];
while([results nextRow]) {
  NSDictionary *resultRow = [results resultDict];
  NSArray *orderedKeys = [[resultRow allKeys] sortedArrayUsingSelector:@selector(compare:)];
  //iterate over the dictionary
}

Что касается записи в файл CSV, ну есть код для этого тоже :

#import "CHCSV.h"

CHCSVWriter * csvWriter = [[CHCSVWriter alloc] initWithCSVFile:@"/path/to/csv/file" atomic:NO];

//write stuff
[csvWriter closeFile];
[csvWriter release];

И объединить их, вы должны сделать:

FMDatabase *db = [[FMDatabase alloc] initWithPath:@"/path/to/db/file"];
if (![db open]) {
  //couldn't open the database
  [db release];
  return nil;
}
FMResultSet *results = [db executeQuery:@"SELECT * FROM tableName"];
CHCSVWriter *csvWriter = [[CHCSVWriter alloc] initWithCSVFile:@"/path/to/csv/file" atomic:NO];
while([results nextRow]) {
  NSDictionary *resultRow = [results resultDict];
  NSArray *orderedKeys = [[resultRow allKeys] sortedArrayUsingSelector:@selector(compare:)];
  //iterate over the dictionary
  for (NSString *columnName in orderedKeys) {
    id value = [resultRow objectForKey:columnName];
    [csvWriter writeField:value];
  }
  [csvWriter writeLine];
}
[csvWriter closeFile];
[csvWriter release];

[db close];
[db release];

Это запишет содержимое таблицы tableName в файл CSV.

0 голосов
/ 11 января 2011

Просто выполните SELECT для каждой таблицы и распечатайте значение каждого столбца, как требуется для текстового файла.

...