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

推荐答案

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

SQLite不需要create databaseuse.如果要创建数据库,只需在从命令行运行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不满意的其他事情.你得试一试,修一修,试一试,修一修,直到它能用为止.或者try 为您找到可以在数据库之间转换的工具,我总是手动或使用一次性脚本来完成这类工作,所以我不知道有什么工具可以帮助您.

Database相关问答推荐

使用mongoose 在嵌套对象中查找特定字段

数据库术语中的relation关系是什么意思?

在事务提交之前传递 JMS 消息

MongoDB:查询具有两个相等字段 $match 和 $eq 的文档

在一次 SQL 查询中更新多行的多列

ORM 性能成本

在 PostgreSQL 上获取数据库创建日期

The method setListAdapter(ArrayAdapter) is undefined for the type create

使用varchar作为主键?

friendship数据库模式

SQLite同时读写

如何在 SSIS 中插入新记录之前清空我的目标表?

如何在文件系统中存储图像

如何将sqlite表从磁盘数据库复制到python中的内存数据库?

SQL Server Express LocalDB 可以远程连接吗?

将查询限制为一条记录会提高性能吗

使用 Sinatra 时与数据库对话的最佳方式是什么?

如何安装/更新到 Postgres 9.4?

获取 xp_cmdshell 的执行权限

PostgreSQL 的 EXPLAIN ANALYZE 的 MySQL 类似功能是什么