Экспорт из SQLite в SQL Server

Существует ли инструмент для переноса базы данных SQLite в SQL Server (как структура, так и данные)?


person Geoff Appleford    schedule 02.10.2008    source источник


Ответы (6)


SQLite имеет параметр .dump для запуска в командной строке. Хотя я предпочитаю использовать приложение SQLite Database Browser для управления базами данных SQLite. Вы можете экспортировать структуру и содержимое в файл .sql, который может быть прочитан практически кем угодно. Файл > Экспорт > База данных в файл SQL.

person swilliams    schedule 02.10.2008
comment
Экспортированный файл нуждается в некоторой настройке для различий в синтаксисе, но ничего слишком сложного. Спасибо - person Geoff Appleford; 02.10.2008
comment
Технически оболочка SQLite — это не SQLite, а консольное приложение, связанное с SQLite, которое является всего лишь библиотекой. - person Benoit; 25.01.2011
comment
Это указало мне правильное направление, но я искал синтаксис, поэтому я включу его здесь: sqlite3 my_db.db -batch ".dump" > my_db.sql - person Aaron R.; 02.04.2017
comment
в моем случае это сложно.... поле содержит дату и время, и при экспорте оно экспортировалось с использованием миллисекунд, что было несовместимо, когда я пытался выполнить его в SQL Server :-( - person jstuardo; 13.12.2018

Я знаю, что это старая тема, но я думаю, что это решение должно быть и здесь.

  • Установите драйвер ODBC для SQLite
  • Запустите odbcad32 для x64 или C:\Windows\SysWOW64\odbcad32.exe для x86.
  • Создайте SYSTEM DSN, где вы выбираете драйвер SQLite3 ODBC.
  • Затем вы заполняете форму, где имя базы данных - это путь к файлу базы данных sqlite.

Затем в SQL Server запустите под системным администратором

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')

или вы можете использовать что-то вроде это для больших таблиц.

person Krivers    schedule 05.10.2015
comment
SELECT * INTO SQLServerDATA FROM openquery(OldSQLite, 'select * from SQLiteData') ------------------- И вы можете установить драйвер для 64-битной версии и создать ODBC для 64-битной версии. (odbcad32 в папке system32 - Драйвер ODBC для SQLite3) - person R.Alonso; 27.05.2017

Команда SQLite .dump выведет все содержимое базы данных в виде текстового файла ASCII. Этот файл имеет стандартный формат SQL, поэтому его можно импортировать в любую базу данных SQL. Подробнее на этой странице: sqlite3.

person Nathan Clark    schedule 02.10.2008
comment
ну, команда .dump сама по себе выводит на экран. вам также нужно использовать команду .output, чтобы получить ее в файл. - person aris; 11.01.2019

sqlite-manager, надстройка Firefox: позволяет экспортировать базу данных SQLite в сценарий SQL.

База данных>Экспорт базы данных>Экспорт в файл

(Исправление ошибки firefox 35 требует исправить код расширения, как указано на следующей веб-странице: Как исправить работу дополнительного модуля менеджера sqlite)

Командная строка:

sqlite3 DB_name .dump > DB_name.sql

экспортирует базу данных sqlite в сценарий SQL.

Из URL-адреса: http://doc.ubuntu-fr.org/sqlite#lister_les_commandes_sqlite.

person AlbanMar31    schedule 26.01.2015
comment
надстройка кажется мертвой, версия Firefox 57.0 показывает ее как несовместимую и непригодную для использования... - person me_; 24.11.2017

Идея состоит в том, чтобы сделать что-то вроде этого: - Просмотрите squema в sql lite и получите команду CREATE TABLE. - Выполнение, разбор sql, в SQL SERVER - Данные перемещения, создающие статус INSERT для каждой строки. (тоже парсинг sql)

Этот код является бета-версией, потому что он не определяет данные типа и не использует @parameter и объект команды, но запускается.

(Вам нужно вставить ссылку и установить System.Data.SQLite;)

c#: вставьте этот код (или neccesari) в заголовок cs

с помощью системы;

используя System.Collections.Generic;

используя System.Text;

используя System.Data;

используя System.Data.SqlClient;

используя System.Data.SQLite;

использование System.Threading;

используя System.Text.RegularExpressions;

с помощью System.IO;

с помощью 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
    }
person R.Alonso    schedule 07.11.2016

Для Android.

adb root
adb shell
cd /data/com.xxx.package/databases/
sqlite3 db_name .dump >dump.sql
person caopeng    schedule 19.06.2019