SQLiteデータベースをSQL Server (構造とデータの両方)に移行するツールはありますか?
6 に答える
SQLiteには、コマンド ラインで実行する .dump オプションがあります。ただし、SQLite データベースを管理するためにSQLite Database Browserアプリケーションを使用することを好みます。構造と内容を、ほぼ何でも読み取ることができる .sql ファイルにエクスポートできます。[ファイル] > [エクスポート] > [データベースを SQL ファイルに]。
SQLite.dump
コマンドは、データベースの内容全体を ASCII テキスト ファイルとして出力します。このファイルは標準の SQL 形式であるため、任意の SQL データベースにインポートできます。このページの詳細: sqlite3
sqlite-manager、firefox アドオン: SQL スクリプトで SQLite データベースをエクスポートできます。
データベース>データベースのエクスポート>ファイルへのエクスポート
(次の Web ページに示すように拡張コードを修正する必要がある修正 Firefox 35 バグ: How to fix your optional sqlite manager module to work )
コマンドライン:
sqlite3 DB_name .dump > DB_name.sql
SQL スクリプトで sqlite データベースをエクスポートします。
URL から: http://doc.ubuntu-fr.org/sqlite。
アイデアは次のようなことです: - sql lite で squema を表示し、CREATE TABLE コマンドを取得します。- SQL SERVER で sql を解析して実行 - 行ごとに INSERT ステートメントを作成するデータを移動します。(SQLの解析も)
このコードはベータ版です。タイプ データを検出せず、@parameter とコマンド オブジェクトを使用せずに実行するためです。
(参照を挿入して System.Data.SQLite をインストールする必要があります;)
c#: このコード (または必要) を head 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
}