我有一个包含一些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上执行此操作?
答案 0 :(得分:43)
这不是一个SQL文件,它包含一堆特定于MySQL的东西,其中一些SQLite会接受,有些则不会。我们将从顶部开始。
您不需要使用SQLite create database
或use
。如果要创建数据库,只需在命令行运行sqlite3
时为其命名:
$ sqlite3 db_name.sqlt < your_sql.sql
如果db_name.sqlt
存在,那么它将被使用,如果它不存在,那么它将被创建。因此create database
和use
隐含在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”的数据库