Anton Molchan
Anton Molchan

Reputation: 562

Sqlite attach database and insert data from table A to table B

I have two sqlite databases and want to copy a table from database A to database B. The other tables in database A should not be copied. I try to ATTACH database, then use INSERT but have exception "no such table" on attached table. My code:

private final String TABLE_NAME = "LOAD_IMAGES";
private final String COLUMN_UNIT_ID = "UNIT";
private final String COLUMN_LOAD = "LOAD";

public void createTable(){
    String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " ("
            + COLUMN_UNIT_ID + " INTEGER NOT NULL, "
            + COLUMN_LOAD + " INTEGER NOT NULL DEFAULT 0);";

    database.execSQL(CREATE_TABLE);
}

public void insertData() {
    String path = App.filesDir + '/' + "data";
    database.execSQL("ATTACH DATABASE '" + path + "' AS data;");
    String ADD_DATA_INTO_TABLE = "INSERT INTO '" + TABLE_NAME + "'(" 
    + COLUMN_UNIT_ID + ", " + COLUMN_LOAD +") " +"SELECT " + 
    COLUMN_UNIT_ID + ", " + COLUMN_LOAD + " FROM 'data.IMAGES';";

}

Exception log:

android.database.sqlite.SQLiteException: no such table: data.IMAGES (code 1): , while compiling: INSERT INTO 'LOAD_IMAGES'(UNIT, LOAD) SELECT UNIT, LOAD FROM 'data.IMAGES';

I try to write :

LOAD FROM data.IMAGES

or

LOAD FROM 'data'.'IMAGES'

or

LOAD FROM data'.'IMAGES

but nothink changed.

Table of second database "IMAGES" structure: enter image description here

Upvotes: 0

Views: 1084

Answers (1)

CL.
CL.

Reputation: 180060

FROM 'data.IMAGES'

This is interpreted as a plain table name. Remove the quotes.

Upvotes: 1

Related Questions