web-dev-qa-db-ja.com

SQLiteからSQL Serverへのエクスポート

SQLite データベースを SQL Server (構造とデータの両方)に移行するツールはありますか?

26
Geoff Appleford

SQLite には、コマンドラインで実行する.dumpオプションがあります。 SQLiteデータベースを管理するために SQLite Database Browser アプリケーションを使用することを好みますが。構造と内容を.sqlファイルにエクスポートして、ほとんど何でも読み取ることができます。ファイル>エクスポート>データベースからSQLファイル。

30
swilliams

これは古いスレッドであることはわかっていますが、この解決策もここにあるはずです。

  • インストールODBC SQLiteのドライバー
  • X64の場合はodbcad32を、x86の場合はC:\ Windows\SysWOW64\odbcad32.exeを実行します。
  • SQLite3を選択するSYSTEM DSNを作成しますODBC Driver
  • 次に、データベース名が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')

または、より大きなテーブルには this のようなものを使用できます。

10
Krivers

SQLite .dumpコマンドは、データベースの内容全体をASCIIテキストファイルとして出力します。このファイルは標準SQL形式なので、どのSQLデータベースにもインポートできます。このページの詳細: sqlite

7
Nathan Clark

sqlite-manager、firefoxアドオン:SQLスクリプトでSQLiteデータベースをエクスポートできます。

データベース>データベースのエクスポート>ファイルへのエクスポート

(修正Firefox 35バグは、次のWebページに示すように拡張コードを修正する義務があります: オプションのsqliteマネージャーモジュールを修正して動作させる方法

コマンドライン

sqlite3 DB_name .dump > DB_name.sql

sQLスクリプトでsqliteデータベースをエクスポートします。

Urlから: http://doc.ubuntu-fr.org/sqlite

4
AlbanMar31

アンドロイド用。

adb root
adb Shell
cd /data/com.xxx.package/databases/
sqlite3 db_name .dump >dump.sql
0
caopeng

アイデアは、次のようなことです。-SQL liteでsquemaを表示し、CREATE TABLEコマンドを取得します。 -実行、SQLの解析、SQLサーバーで-各行の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
    }
0
R.Alonso