Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 问题是关于复制表而不是合并表。您可以尝试通过转储到临时文件、编辑文件、删除CREATETABLE语句并使用临时文件作为new.db的输入来进行合并。但主键上的冲突可能会发生happen@MartinMeeser,实际上合并是有效的,如果目标数据库中存在表,_Database_Sqlite - Fatal编程技术网

Database 问题是关于复制表而不是合并表。您可以尝试通过转储到临时文件、编辑文件、删除CREATETABLE语句并使用临时文件作为new.db的输入来进行合并。但主键上的冲突可能会发生happen@MartinMeeser,实际上合并是有效的,如果目标数据库中存在表,

Database 问题是关于复制表而不是合并表。您可以尝试通过转储到临时文件、编辑文件、删除CREATETABLE语句并使用临时文件作为new.db的输入来进行合并。但主键上的冲突可能会发生happen@MartinMeeser,实际上合并是有效的,如果目标数据库中存在表,,database,sqlite,Database,Sqlite,问题是关于复制表而不是合并表。您可以尝试通过转储到临时文件、编辑文件、删除CREATETABLE语句并使用临时文件作为new.db的输入来进行合并。但主键上的冲突可能会发生happen@MartinMeeser,实际上合并是有效的,如果目标数据库中存在表,您将收到错误消息,但数据将被复制。@MartinMeeser在我安装的SQLite版本(v3.19.3)中,.dump创建命令如果不存在,则创建表…,即使我的目标表存在,也没有错误。解决这个问题的简单、UNIX友好的方法。你值得我投你一票。非常


问题是关于复制表而不是合并表。您可以尝试通过转储到临时文件、编辑文件、删除CREATETABLE语句并使用临时文件作为new.db的输入来进行合并。但主键上的冲突可能会发生happen@MartinMeeser,实际上合并是有效的,如果目标数据库中存在表,您将收到错误消息,但数据将被复制。@MartinMeeser在我安装的SQLite版本(v3.19.3)中,
.dump
创建命令
如果不存在,则创建表…
,即使我的目标表存在,也没有错误。解决这个问题的简单、UNIX友好的方法。你值得我投你一票。非常感谢。注意:这不会保留
唯一的
主键
属性,因此如果您有这些属性,您需要
删除表
,手动
创建
插入
,或者使用
转储
。通过@Thinkeye.Perfect读取
,您甚至可以进入转储文件并根据需要进行编辑,例如,必要时更改表的名称等。
INSERT INTO X.TABLE SELECT * FROM Y.TABLE;
INSERT INTO X.TABLE(fieldname1, fieldname2) SELECT fieldname1, fieldname2 FROM Y.TABLE;
seq name file --- --------------- ---------------------------------------------------------- 0 main /mnt/fastaccessDS/core/csv/atlanta.db 2 AM /mnt/fastaccessDS/core/csv/allmsa.db
-(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);
        }
 }
c:\sqlite>sqlite3.exe old_db.sqlite
sqlite> .output mytable_dump.sql
sqlite> .dump my_table
sqlite> .quit
c:\sqlite>sqlite3.exe new_db.sqlite
sqlite> .read mytable_dump.sql
sqlite3 old.db ".dump mytable" | sqlite3 new.db
> DROP TABLE IF EXISTS db2.t1; CREATE TABLE db2.t1 AS SELECT * FROM db1.t1;
> sqlite3
sqlite> ATTACH "DB1.sqlite" AS db1
sqlite> ATTACH "DB2.sqlite" AS db2
sqlite> .databases
main: 
db1: /db/DB1.sqlite
db2: /db/DB2.sqlite