什么是将大而简单的数据库从SQLite转换为SQL Server并返回的最简单方法?

时间:2012-12-14 05:16:31

标签: sql-server sqlite

我有一个非常简单的数据库(只是几个简单的表)但非常大(在SQLite中是一个GiB)。在开发它时,我尽力使用非常标准的列类型:INT, DOUBLE, CHAR, VARCHAR(但这些是SQL Server的NCHARNVARCHAR来代替SQLite的UTF-8 { {1}}和CHAR)并且没有特定于DBMS的功能。

将数据库从SQLite转换为SQL Server并返回的最简单方法是什么?

我不介意手动定义目标数据库,而不是从源代码生成所有DDL,但我寻求自动化数据迁移。

更新

我发现自己的最简单方法是使用

从SQLite导出
VARCHAR

然后删除引号

> sqlite3 mydb.sqlite
sqlite> .headers off
sqlite> .mode csv
sqlite> .output mytable.csv
sqlite> select * from `mytable`;

从Unix(LF行结尾)转换为DOS(CR + LF行结尾)文本格式(因为tr -d \" < mytable.csv > mytable-plain.csv 是Unix工具并输出Unix)

tr

并使用unix2dos mytable-plain.csv

将其导入SQL Server
BULK INSERT

假设已在SQL Server架构中创建了相同的空表。

在Windows上运行BULK INSERT [dbo].[mytable] FROM 'c:\mytable-plain.csv' WITH ( FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' ); GO cygwin需要

tr

我花了半个小时(在我的Core 2 Duo笔记本电脑上)将半GiB CSV文件导入SQL Server。

我仍然相信有一种更简单的方法。也许有一个T-SQL函数可以通过ODBC或从源数据库中选择并插入目标的程序来查询不同的数据源(我很难相信没有人写过这样的数据)。

0 个答案:

没有答案
相关问题