2017-04-13 38 views
0

我想从SQL Server数据库中的表导入到SQLite数据库。不过,我认为文件tables.sql不完整或不正确。 从SQL Server Management Studio中,我生成一个脚本(tables.sql),只从数据库中选择一些表。这个文件看起来像这样(有两个表):从.sql导入表到SQLite,不完整SQL

USE [MYDATABASE] 
GO 
SET IDENTITY_INSERT [dbo].[TABLE_ONE] ON 

INSERT [dbo].[TABLE_ONE] ([TABLE_ONE_ID], [TABLE_ONE_MNEMO], [TABLE_ONE_DESC], [AUTO_ANALYSIS], [SCOPE_LEVEL], [IN_ABV], [TABLE_ONE_ORDER], [REPORT_ATA]) VALUES (37, N'GENERAL', N'GENERAL', N'N', 3, 0, 1, N'GEN') 
... 
GO 
... 
INSERT [dbo].[TEST_POINT_TYPE] ([TEST_POINT_TYPE_ID], [TEST_POINT_TYPE_MNEMO], [TEST_POINT_TYPE_DESC], [AUTO_ANALYSIS], [SCOPE_LEVEL], [IN_PATM], [TEST_POINT_TYPE_ORDER], [REPORT_ATA]) VALUES (207, N'LDMCR', N'LDMCR', N'N', 1, 1, 999, N'70') 
SET IDENTITY_INSERT [dbo].[TABLE_ONE] OFF 
SET IDENTITY_INSERT [dbo].[TABLE_TWO] ON 

INSERT [dbo].[TABLE_TWO] ([TBT_ID], [TABLE_ONE_ID], [SUBPROGRAM_ID], [VALUE], [DESCRIPTION], [ETE], [SUBPROGRAM_CONTEXT], [IS_HOHO], [TEST_VISIBLE], [COMPLETION_ONLY], [CUPTER_NM_CHECKED_WORD], [CUPTER_NM_CHECKED_MAIN], [CUPTER_NM_CHECKED_MORE]) VALUES (1, NULL, 5, NULL, N'Air conditioning checks', N'21', NULL, NULL, NULL, NULL, NULL, NULL, NULL) 
... 
GO 
... 
INSERT [dbo].[TABLE_TWO] ([TBT_ID], [TABLE_ONE_ID], [SUBPROGRAM_ID], [VALUE], [DESCRIPTION], [ETE], [SUBPROGRAM_CONTEXT], [IS_HOHO], [TEST_VISIBLE], [COMPLETION_ONLY], [CUPTER_NM_CHECKED_WORD], [CUPTER_NM_CHECKED_MAIN], [CUPTER_NM_CHECKED_MORE]) VALUES (39, NULL, 5, NULL, N'Auto call-outs', N'31', NULL, NULL, NULL, NULL, NULL, NULL, NULL) 
SET IDENTITY_INSERT [dbo].[TABLE_TWO] OFF 

现在,如果我尝试使用以下命令:

cat tables.sql | sqlite3 MYDATABASE.db 

我有以下声明

Error: incomplete SQL: ▒▒U 

我想的东西在tables.sql文件中丢失了,我试图在开头添加这个:

CREATE DATABASE IF NOT EXISTS [MYDATABASE] 

但它没有改变任何东西。我可以更改/添加什么来完成tables.sql文件?那么这里只是两个表格的例子,实际上我有更多的表格和项目。

谢谢你的帮助。

+0

不SQlite的真正接受SQL Server语法? – jarlh

+0

嗯,我真的不知道。我正在寻找一种解决方案将这些数据导入到SQLite数据库中,而此时我还没有找到另一种“简单”的方法。从.sql文件导入数据似乎是最常见的方式。 编辑:现在,如果你知道我需要在语法上改变什么,那将是完美的 – LaPalme

+0

我不太了解SQlite。 (我只是认识到SQL Server风格的语法。) – jarlh

回答

0

此脚本使用SQLite不支持的大量SQL Server特有功能。

SQLite没有CREATE DATABASEUSE,SETGO。删除它们。

SQLite没有schemans(与SQL Server不同,仅适用于附加数据库)。删除所有[dbo].前缀。

SQLite字符串总是Unicode。删除N前缀。

SQLite恰好支持SQL Server的[/]引用。

有一个在代码中没有▒▒U你所展示的,所以有可能是其他问题......

+0

谢谢CL。我会尽力做到这一点,也许写一个脚本来做所有的修改,因为我有数百行。最后,我明白这是一个语法问题。 – LaPalme

+0

感谢您的帮助@CL。有用。现在,我想添加另一个建议,如果有人需要它,我不得不使用命令dos2unix来转换tables.sql文件(我正在使用Windows中的文件在Linux上工作)。 – LaPalme