Ok donc j'ai trouvé une solution qui est base de données indépendante pour importer une base de données à partir d'un fichier .sql assez facilement !! :)
Alors quelle que soit la base de données que vous avez (Mysql, SQLite, ...) procédez comme suit:
1) exporter votre base de données au format .sql. (Ce fichier .sql contiendra toutes les commandes SQL telles que CREATE TABLE ... INSERT INTO table ...) (Vous devrez peut-être supprimer les lignes commençant par CREATE TABLE et ne laisser que les lignes commençant par INSERT. .)
2) Ensuite, dans la langue que vous utilisez écrire du code qui a lu chaque ligne des fichiers Sql Lite et la stocke dans un tableau de String (String [])
3) Ensuite, exécutez chaque chaîne contenues dans le tableau String [] comme commande SQL
Je l'ai mis en œuvre ce en Java:
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.List;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
public class DatabaseImporter {
private static DatabaseImporter instance;
public static DatabaseImporter getInstance(){
if(DatabaseImporter.instance == null)
instance = new DatabaseImporter();
return DatabaseImporter.instance;
}
private DatabaseImporter(){
}
public void importDatabaseFromFile(Context context, String databaseName , String filePath){
SQLiteDatabase database = //CREATE UR DATABASE WITH THE COMMAND FROM THE DATABASE API YOUR USING
this.executeSqlCommands( database ,
this.readSqlCommandsFromFile(filePath)
);
}
private String[] readSqlCommandsFromFile(String filePath){
String[] sqlCommands = new String[0];
List<String> sqlCommandsList = new LinkedList<String>();
try{
// Open the file that is the first
// command line parameter
FileInputStream fstream = new FileInputStream(filePath);
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String strLine;
//Read File Line By Line
while ((strLine = br.readLine()) != null) {
if(!strLine.equals("") && !strLine.equals(" ") && strLine != null)
sqlCommandsList.add(strLine);
}
//Close the input stream
in.close();
}catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
}
sqlCommands = new String[sqlCommandsList.size()];
sqlCommandsList.toArray(sqlCommands);
return sqlCommands;
}
private void executeSqlCommands(SQLiteDatabase database, String[] sqlCommands){
for(int i = 0; i < sqlCommands.length ; i++){
database.execSQL(sqlCommands[i]);
}
}
}
@Giorgio, quel RDBMS utilisez-vous? –
La question n'est pas encore exhaustive. De quelle base de données parlez-vous? Oracle prend en charge le chargeur SQL et SQL Server prend également en charge un outil similaire. – Kangkan
Une fois que nous connaissons la base de données, cette question sera presque certainement une copie d'une question existante. – APC