将数据从一个SQLite数据库复制到另一个数据库

内容来源于 Stack Overflow,遵循 CC BY-SA 4.0 许可协议进行翻译与使用。IT领域专用引擎提供翻译支持

腾讯云小微IT领域专用引擎提供翻译支持

原文
Stack Overflow用户 修改于2017-02-15
  • 该问题已被编辑
  • 提问者: Stack Overflow用户
  • 提问时间: 2010-03-02 05:30

我有两个SQLite数据库,有相同的数据,但用途不同,我想避免重新插入数据,所以我想知道是否可以将整个表从一个数据库复制到另一个数据库?

浏览 653 关注 0 得票数 159
  • 得票数为Stack Overflow原文数据
原文
修改于2016-03-23
  • 该回答已被编辑
  • 回答者: Stack Overflow用户
  • 回答时间: 2010-03-02 05:43
得票数 187

您必须使用 ATTACH 命令将数据库X与数据库Y连接起来,然后为要传输的表运行适当的Insert Into命令。

INSERT INTO X.TABLE SELECT * FROM Y.TABLE;

或者,如果列没有按顺序匹配:

INSERT INTO X.TABLE(fieldname1, fieldname2) SELECT fieldname1, fieldname2 FROM Y.TABLE;
修改于2017-02-15
  • 该回答已被编辑
  • 回答者: Stack Overflow用户
  • 回答时间: 2015-08-19 18:15
得票数 6

将表从一个数据库复制到另一个数据库的Objective-C代码

-(void) createCopyDatabase{
          NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
          NSString *documentsDir = [paths objectAtIndex:0];
          NSString *maindbPath = [documentsDir stringByAppendingPathComponent:@"User.sqlite"];;
          NSString *newdbPath = [documentsDir stringByAppendingPathComponent:@"User_copy.sqlite"];
          NSFileManager *fileManager = [NSFileManager defaultManager];
          char *error;
         if ([fileManager fileExistsAtPath:newdbPath]) {
             [fileManager removeItemAtPath:newdbPath error:nil];
         sqlite3 *database;
         //open database
        if (sqlite3_open([newdbPath UTF8String], &database)!=SQLITE_OK) {
            NSLog(@"Error to open database");
        NSString *attachQuery = [NSString stringWithFormat:@"ATTACH DATABASE \"%@\" AS aDB",maindbPath];
       sqlite3_exec(database, [attachQuery UTF8String], NULL, NULL, &error);
       if (error) {
           NSLog(@"Error to Attach = %s",error);
       //Query for copy Table
       NSString *sqlString = @"CREATE TABLE Info AS SELECT * FROM aDB.Info";
       sqlite3_exec(database, [sqlString UTF8String], NULL, NULL, &error);
        if (error) {
            NSLog(@"Error to copy database = %s",error);
        //Query for copy Table with Where Clause
        sqlString = @"CREATE TABLE comments AS SELECT * FROM aDB.comments Where user_name = 'XYZ'";
        sqlite3_exec(database, [sqlString UTF8String], NULL, NULL, &error);
        if (error) {
            NSLog(@"Error to copy database = %s",error);