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

use*_*431 23 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
    ...
    ...
    ...
Run Code Online (Sandbox Code Playgroud)

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

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

mu *_*ort 44

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

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

$ sqlite3 db_name.sqlt < your_sql.sql
Run Code Online (Sandbox Code Playgroud)

如果db_name.sqlt存在则将使用它,如果它不存在则将被创建.所以create database,use你的运作方式暗示着sqlite3.您可能需要使用不同的扩展,具体取决于Python想要查看的内容.

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

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

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