2017-04-13 36 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