如何使用SQL命令文件创建SQLite3数据库文件?

时间:2012-12-22 19:11:24

标签: sql database sqlite

我有一个包含一些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上执行此操作?

2 个答案:

答案 0 :(得分:43)

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

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

$ sqlite3 db_name.sqlt < your_sql.sql

如果db_name.sqlt存在,那么它将被使用,如果它不存在,那么它将被创建。因此create databaseuse隐含在sqlite3的运行方式中。根据Python想要查看的内容,您可能需要使用不同的扩展名。

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

SQLite不知道int(10) unsigned的含义,在SQLite接受之前你必须删除unsigned。 SQLite也不知道ENGINE=InnoDB DEFAULT CHARSET=utf8的含义,所以你也必须删除它。

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

答案 1 :(得分:0)

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

来创建或打开数据库
sqlite3 db

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