25

我有一个包含一些 SQL 命令的文件,如下所示:

CREATE DATABASE IF NOT EXISTS `db_name`;
USE `db_name`;

CREATE TABLE IF NOT EXISTS `customers` (
  `id` int(10) unsigned NOT NULL,
  `f_name` varchar(50) DEFAULT NULL,
  `l_name` varchar(50) DEFAULT NULL,
  `company_name` varchar(200) DEFAULT NULL,
  `email` varchar(50) DEFAULT NULL,
  `phone` varchar(25) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `customers` (`id`, `f_name`, `l_name`, `company_name`, `email`, `phone`) VALUES
    ...
    ...
    ...

我想使用这些命令创建一个 SQLite3 数据库文件,以便在 Python 中轻松使用它。

我如何在 Ubuntu 上做到这一点?

4

2 回答 2

51

这不是一个完整的 SQL 文件,它包含一堆特定于 MySQL 的东西,其中一些 SQLite 会接受,而另一些则不会。我们将从顶部开始。

您不需要create databaseuse使用 SQLite。如果要创建数据库,只需在sqlite3从命令行运行时为其命名:

$ sqlite3 db_name.sqlt < your_sql.sql

如果db_name.sqlt存在则将使用它,如果它不存在则将创建它。所以create databaseuse是由你如何运行所暗示的sqlite3。根据 Python 想要看到的内容,您可能需要使用不同的扩展。

引用的反引号是 MySQL 主义,双引号是标识符的标准引用机制。幸运的是,SQLite 会接受它们,所以你可以不用管它们。

SQLite 不知道是什么int(10) unsigned意思,你必须unsigned在 SQLite 接受它之前删除它。SQLite 也不知道是什么ENGINE=InnoDB DEFAULT CHARSET=utf8意思,所以你也必须删除它。

您可能会遇到 MySQL 满意但 SQLite 不满意的其他事情。您必须尝试并修复它并尝试并修复它,直到它起作用为止。或者尝试找到一种可以为您在数据库之间进行转换的工具,我总是手工或使用一次性脚本来做这些事情,所以我不知道有什么工具可以帮助您。

于 2012-12-22T19:29:26.347 回答
1

基本上上面的命令是用于 mysql 或其他数据库的(其中大部分必须进行调整才能与 sqlite 一起使用。Sqlite 以文件的形式存储数据库。基本上,当你启动 sqlite 时,它​​会创建一个文件(如果不存在)。你可以通过键入来创建或打开数据库

sqlite3 db

在命令行上。此语句创建或打开名为“db”的数据库

于 2012-12-22T19:36:48.347 回答