0

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

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

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

更新:

我发现自己最简单的方法是从 SQLite 导出

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

然后删除引号

tr -d \" < mytable.csv > mytable-plain.csv

从 Unix(LF 行尾)转换为 DOS(CR+LF 行尾)文本格式(作为trUnix 工具并输出 Unix)

unix2dos mytable-plain.csv

并将其导入 SQL ServerBULK INSERT

BULK
INSERT [dbo].[mytable]
FROM 'c:\mytable-plain.csv'
WITH
(
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '\n'
);
GO

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

cygwin需要在 Windowstr上运行。unix2dos

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

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

4

0 回答 0