Existe-t-il un outil permettant de migrer une base de données SQLite vers SQL Server (la structure et les données)?
SQLite a une option .dump à exécuter sur la ligne de commande. Bien que je préfère utiliser l’application SQLite Database Browser pour gérer les bases de données SQLite. Vous pouvez exporter la structure et le contenu dans un fichier .sql lisible par à peu près n'importe quoi. Fichier> Exporter> Base de données vers un fichier SQL.
La commande SQLite .dump
affiche le contenu intégral de la base de données sous forme de fichier texte ASCII. Ce fichier est au format SQL standard, il peut donc être importé dans n’importe quelle base de données SQL . Plus de détails sur cette page: sqlite3
Je sais que c'est du vieux fil, mais je pense que cette solution devrait également être ici.
Ensuite, dans SQL Server, exécutez sous sysadmin
USE [master]
GO
EXEC sp_addlinkedserver
@server = 'OldSQLite', -- connection name
@srvproduct = '', -- Can be blank but not NULL
@provider = 'MSDASQL',
@datasrc = 'SQLiteDNSName' -- name of the system DSN connection
GO
Ensuite, vous pouvez exécuter vos requêtes en tant qu’utilisateur normal
SELECT * INTO SQLServerDATA FROM openquery(SQLiteDNSName, 'select * from SQLiteData')
ou vous pouvez utiliser quelque chose comme this pour les tables plus grandes.
sqlite-manager, firefox add-on: permet d'exporter une base de données SQLite dans un script SQL.
Base de données> Exporter la base de données> Exporter vers un fichier
(Correction firefox 35 bugg obligé de corriger le code d'extension comme indiqué sur la page web suivante: Comment réparer votre module optionnel sqlite manager au travail )
Ligne de commande :
sqlite3 DB_name .dump > DB_name.sql
exporte la base de données sqlite dans un script SQL.
Depuis l'url: http://doc.ubuntu-fr.org/sqlite .
Une idée est de faire quelque chose comme ceci: - Voir le squema dans sql lite et obtenir la commande CREATE TABLE. . (analyser SQL aussi)
Ce code est bêta, car aucune donnée de type de détection et aucune utilisation de paramètre @parameter et de commande ne sont exécutées.
(Vous devez insérer une référence et installer System.Data.SQLite;)
c #: Insérez ce code (ou neccesari) dans la tête cs
en utilisant le système;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Data.SQLite;
using System.Threading;
using System.Text.RegularExpressions;
using System.IO;
en utilisant log4net;
using System.Net;
public static Boolean SqLite2SqlServer(string sqlitePath, string connStringSqlServer)
{
String SqlInsert;
int i;
try
{
string sql = "select * from sqlite_master where type = 'table' and name like 'YouTable in SQL'";
string password = null;
string sql2run;
string tabla;
string sqliteConnString = CreateSQLiteConnectionString(sqlitePath, password);
//sqliteConnString = "data source=C:\\pro\\testconverter\\Origen\\FACTUNETWEB.DB;page size=4096;useutf16encoding=True";
using (SQLiteConnection sqconn = new SQLiteConnection(sqliteConnString))
{
sqconn.Open();
SQLiteCommand command = new SQLiteCommand(sql, sqconn);
SQLiteDataReader reader = command.ExecuteReader();
SqlConnection conn = new SqlConnection(connStringSqlServer);
conn.Open();
while (reader.Read())
{
//Console.WriteLine("Name: " + reader["name"] + "\tScore: " + reader["score"]);
sql2run = "" + reader["sql"];
tabla = "" + reader["name"];
/*
sql2run = "Drop table " + tabla;
SqlCommand cmd = new SqlCommand(sql2run, conn);
cmd.ExecuteNonQuery();
*/
sql2run = sql2run.Replace("COLLATE NOCASE", "");
sql2run = sql2run.Replace(" NUM", " TEXT");
SqlCommand cmd2 = new SqlCommand(sql2run, conn);
cmd2.ExecuteNonQuery();
// insertar los datos.
string sqlCmd = "Select * From " + tabla;
SQLiteCommand cmd = new SQLiteCommand(sqlCmd, sqconn);
SQLiteDataReader rs = cmd.ExecuteReader();
String valor = "";
String Valores = "";
String Campos = "";
String Campo = "";
while (rs.Read())
{
SqlInsert = "INSERT INTO " + tabla;
Campos = "";
Valores = "";
for ( i = 0; i < rs.FieldCount ; i++)
{
//valor = "" + rs.GetString(i);
//valor = "" + rs.GetName(i);
Campo = "" + rs.GetName(i);
valor = "" + rs.GetValue(i);
if (Valores != "")
{
Valores = Valores + ',';
Campos = Campos + ',';
}
Valores = Valores + "'" + valor + "'";
Campos = Campos + Campo;
}
SqlInsert = SqlInsert + "(" + Campos + ") Values (" + Valores + ")";
SqlCommand cmdInsert = new SqlCommand(SqlInsert, conn);
cmdInsert.ExecuteNonQuery();
}
}
}
return true;
} //END TRY
catch (Exception ex)
{
_log.Error("unexpected exception", ex);
throw;
} // catch
}