Экспорт из SQLite в SQL Server
есть ли инструмент для переноса SQLite
5 ответов
SQLite есть .дамп для запуска в командной строке. Хотя я предпочитаю использовать Браузер Базы Данных SQLite приложение для управления базами данных SQLite. Вы можете экспортировать структуру и содержание .sql-файл, который может быть прочитан практически любым. Файл > Экспорт > база данных в файл SQL.
Я знаю, что это старый поток, но я думаю, что это решение также должно быть здесь.
- установить драйвер ODBC для SQLite
- запустите odbcad32 для x64 или C:\Windows\SysWOW64\odbcad32 - ... exe для x86
- создать системный DSN, где вы выбираете драйвер sqlite3 ODBC
- затем вы заполняете форму, где имя базы данных является filepath для базы данных sqlite
затем в SQL Server запустите под 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
затем вы можете запускайте запросы как обычный пользователь например,
SELECT * INTO SQLServerDATA FROM openquery(SQLiteDNSName, 'select * from SQLiteData')
или вы можете использовать что-то вроде этой для больших таблиц.
SQLite .dump
команда выведет все содержимое базы данных в виде текстового файла ASCII. Этот файл имеет стандартный формат SQL, поэтому его можно импортировать в любую базу данных SQL.
Подробнее на этой странице:и sqlite3
sqlite-manager, Firefox add-on: позволяет экспортировать базу данных SQLite в сценарии SQL.
база данных>экспорт базы данных>экспорт в файл
(исправление firefox 35 Багг обязан исправить код расширения, как указано на следующей веб-странице: Как исправить дополнительный модуль SQLite manager для работы)
Командная строка :
sqlite3 DB_name .dump > DB_name.sql
экспортирует базу данных sqlite в SQL скрипт.
из url:http://doc.ubuntu-fr.org/sqlite.
идея-сделать что-то вроде этого: - Просмотр squema в sql lite и получить команду CREATE TABLE. - Выполнение, синтаксический анализ sql, в SQL SERVER - Travel data создание вставки statment для каждой строки. (разбор sql тоже)
этот код является бета-версией, потому что нет данных типа обнаружения и нет объекта @parameter и command, но выполняется.
(вам нужно вставить ссылку и установить систему.Данные.SQLite;)
c#: Вставьте этот код (или neccesari) в head cs
используя Система;
использование системы.Коллекции.Generic;
использование системы.Текст;
использование системы.Данные;
использование системы.Данные.В sqlclient;
использование системы.Данные.SQLite;
использование системы.Threading;
использование системы.Текст.RegularExpressions;
использование системы.ИО;
используя такой как log4net;
использование 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
}