В моем приложении, я хочу, чтобы экспортировать файл базы данных SQLite в CSV-файл ..Как экспортировать файл SQLite в CSV файл в iPhone SDK
Не могли бы вы предложить мне, как это сделать? Спасибо.
В моем приложении, я хочу, чтобы экспортировать файл базы данных SQLite в CSV-файл ..Как экспортировать файл SQLite в CSV файл в iPhone SDK
Не могли бы вы предложить мне, как это сделать? Спасибо.
Во-первых, вы хотите, чтобы вы использовали 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, а there's code for that too:
#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.
@ Дэйв: О, боже мой. Я никогда не слышал о FMDB. Я собираюсь, наконец, убить весь этот родной код SQLite в моем приложении! О счастливый день!!!!! – Josh
@ Джош, пожалуйста! Для Obj-C есть * тонна * открытого исходного кода, поэтому, когда вы сомневаетесь, это, вероятно, уже сделано для вас (в пределах разумного);) Я буду следить за http://cocoaobjects.com –
I сталкиваются с проблемами при импорте моего CSV-файла в мою базу данных sqlite. Мой файл csv содержит европейские языки со специальным символом, например умлаутом. Что может быть неправильным? – Meghan
Просто сделайте SELECT для каждой таблицы и распечатайте значение каждого столбца в соответствии с текстовым файлом.
Имеет ли база данных один или несколько таблиц? –
Да, у него есть 2 стола. – Meghan