如何将脚本转换为SQLite数据库?

时间:2018-01-18 07:18:46

标签: database sqlite

我想将下面的脚本转换为名为MobileSell.db的SQLite数据库。

我怎样才能做到这一点?

我有以下带扩展名为let strokeTextAttributes = [ NSAttributedStringKey.strokeColor : UIColor.green, NSAttributedStringKey.foregroundColor : UIColor.lightGray, NSAttributedStringKey.strokeWidth : -4.0, NSAttributedStringKey.font : UIFont.boldSystemFont(ofSize: 52) ] as [NSAttributedStringKey : Any] hello_cell_lb.attributedText = NSAttributedString(string: "\(hello_array[indexPath.row])", attributes: strokeTextAttributes) 的脚本:

    let myController:MFMailComposeViewController = MFMailComposeViewController()
    if MFMailComposeViewController.canSendMail() {
        myController.mailComposeDelegate = self
        myController.setToRecipients(["example@example.com"])
        self.present(myController, animated: true, completion: nil)
    }

1 个答案:

答案 0 :(得分:3)

假设你的" .sql"文件名为" dump.sql"并且具有正确的SQLite语法,而不是逻辑错误或破坏的引用,
然后你可以通过调用SQLite3的命令行版本从命令行运行该文件,如下所示:

sqlite3.exe -init dump.sql MobileSell.db

当前workig目录是该文件夹时(在PATH环境变量中包含sqlite3.exe或者在exe前面加上完整的绝对路径),这样做。

这假设Windows为环境(我的) 除了诸如" .exe"之类的东西之外,同样应该在其他环境中几乎完全相同。

然而,您的文件会出现一些错误:

Error: near line 4: no such column: id
Error: near line 14: no such column: deptid
Error: near line 92: unknown column "artid" in foreign key definition
Error: near line 101: no such table: main.routes

如果更改

,可以避免这些错误
, CONSTRAINT [sqlite_autoindex_routes_1] PRIMARY KEY ([id])

- >

, CONSTRAINT [sqlite_autoindex_routes_1] PRIMARY KEY ([routeid])

, CONSTRAINT [sqlite_autoindex_dept_1] PRIMARY KEY ([deptid])

- >

, CONSTRAINT [sqlite_autoindex_dept_1] PRIMARY KEY ([debtid])

[customerid] bigint  NULL

- >

[artid] nvarchar(9)  NULL
, [customerid] bigint  NULL

CREATE INDEX [routes_id_index] ON [routes] ([id] ASC);

CREATE INDEX [routes_id_index] ON [routes] ([routeid] ASC);

然后你得到输出" 1"没有错误,在当前工作目录中,您将拥有所需的文件" MobileSell.db"使用创建的数据库(旁边还有脚本文件" dump.sql")。

之后你仍然会在sqlite提示符下。使用例如.tables命令验证成功。然后使用.quit命令退出sqlite提示符。

如果您对使用命令行工具缺乏经验,请使用三个绝对路径;到exe,脚本以及db最终应该到达的位置。

<baspathtoexe>\sqlite3.exe -init <abspathtoscript>\dump.sql <abspathtodbtargetfolder>\MobileSell.db

您必须检查自己数据库的用途是否仍然完整。