一尘不染

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

sql

我有一个包含一些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上做到这一点?


阅读 283

收藏
2021-03-17

共1个答案

一尘不染

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

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

$ sqlite3 db_name.sqlt < your_sql.sql

如果db_name.sqlt存在,则将使用它,如果不存在,则将创建它。因此create databaseuse并暗示您如何运行sqlite3。您可能需要使用不同的扩展名,具体取决于Python希望看到的内容。

引号的反引号是MySQLism,双引号是标识符的标准引号机制。幸运的是,SQLite会接受它们,因此您可以不理会它们。

SQLite不知道这int(10) unsigned意味着什么,您必须unsigned在SQLite接受之前将其删除。SQLite也不知道这ENGINE=InnoDB DEFAULT CHARSET=utf8意味着什么,因此您也必须删除它。

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

2021-03-17