[英]Exporting from SQLite to SQL Server
SQLite确实有一个.dump选项可以在命令行运行。 虽然我更喜欢使用SQLite数据库浏览器应用程序来管理SQLite数据库。 您可以将结构和内容导出到几乎可以读取的.sql文件中。 文件>导出>数据库到SQL文件。
我知道这是旧线程,但我认为这个解决方案也应该在这里。
然后在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附加组件:允许您在SQL脚本中导出SQLite数据库。
数据库>导出数据库>导出到文件
(更正firefox 35 bugg有义务更正扩展代码,如以下网页所示: 如何修复可选的sqlite manager模块工作 )
命令行 :
sqlite3 DB_name .dump > DB_name.sql
在SQL脚本中导出sqlite数据库。
来自网址: http : //doc.ubuntu-fr.org/sqlite 。
一个想法是做这样的事情: - 在sql lite中查看squema并获取CREATE TABLE命令。 - 在SQL SERVER中执行,解析sql - 为每行创建INSERT语句的旅行数据。 (也解析sql)
这段代码是beta版,因为没有检测类型数据,也没有使用@parameter和command对象,而是运行。
(您需要插入引用并安装System.Data.SQLite;)
c#:在head cs中插入此代码(或neccesari)
使用系统;
使用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
}
对于Android。
adb root
adb shell
cd /data/com.xxx.package/databases/
sqlite3 db_name .dump >dump.sql
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.