Exportar do SQLite para o servidor SQL
Existe uma ferramenta para migrar umSQLite para servidor SQL (tanto a estrutura como os dados)?
5 answers
SQLite tem um .opção de descarga para executar na linha de comando. Embora eu prefira usar a aplicação SQLite Database Browser para gerir bases de dados SQLite. Você pode exportar a estrutura e conteúdo para A.arquivo sql que pode ser lido por praticamente qualquer coisa. Ficheiro > Exportar > base de dados para Ficheiro SQL.
- Instalar o controlador ODBC para o SQLite
- Executar odbcad32 para x64 ou C:\Windows\SysWOW64\odbcad32.exe para x86
- Crie o sistema DSN, onde selecciona o controlador ODBC sqlite3
- Depois preenche o formulário onde o nome da Base de dados é filepath para a base de dados SQLite
Depois, no servidor SQL, executar sob o 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
Então você pode executar suas consultas como normal usuario por exemplo
SELECT * INTO SQLServerDATA FROM openquery(SQLiteDNSName, 'select * from SQLiteData')
Ou pode usar algo como isto para tabelas maiores.
O comando SQLite .dump
irá enviar todo o conteúdo da base de dados como um ficheiro de texto ASCII. Este arquivo está em formato SQL padrão, para que possa ser importado em qualquer banco de dados SQL.
Mais detalhes nesta página: sqlite3
O SQLite-manager, o Firefox add-on: permite-lhe exportar uma base de dados SQLite para um programa SQL.
Base de dados>Exportar base de dados>Exportar para Ficheiro
(correcção firefox 35 bugg obrigado a corrigir o código de extensão como indica na página web seguinte: Como corrigir o seu módulo opcional de Gestor de sqlite para funcionar)
Linha de comandos :
sqlite3 DB_name .dump > DB_name.sql
Exporta a base de dados sqlite num script SQL.
A partir do url : http://doc.ubuntu-fr.org/sqlite.
Este código é beta, porque não detecta dados de tipo, e não usa o parâmetro @e objeto de comando, mas executa.
(é necessário inserir referência e instalar o sistema.Dado.SQLite;)
C#: Inserir este código (ou neccesari) na cabeça cs
Utilizando O Sistema;
Utilizar Sistema.Coleccao.Genérico;
Usando O Sistema.Texto;
Usando O Sistema.Data;
Usando O Sistema.Dado.SqlClient;
Usando O Sistema.Dado.SQLite;
Usando O Sistema.Roscagem;
Usando O Sistema.Texto.Regularexpressões;
Utilizar System.IO;
Usando log4net;
Utilizar 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
}