Как создать файл базы данных SQLite3 с помощью командного файла 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?

4b9b3361

Ответ 1

Это не совсем файл SQL, содержащий кучу специфичных для MySQL элементов, некоторые из которых SQLite будут принимать, а некоторые - нет. Мы начнем вверх.

Вам не нужно create database или use с SQLite. Если вы хотите создать базу данных, просто назовите ее, когда вы запустите sqlite3 из командной строки:

$ sqlite3 db_name.sqlt < your_sql.sql

Если db_name.sqlt существует, то он будет использоваться, если он не существует, то он будет создан. Таким образом, create database и use подразумеваются тем, как вы запускаете sqlite3. Возможно, вам потребуется использовать другое расширение в зависимости от того, что хочет видеть Python.

Backticks для цитирования являются MySQLism, двойные кавычки являются стандартным механизмом цитирования для идентификаторов. К счастью для вас, SQLite примет их, поэтому вы можете оставить их в покое.

SQLite не будет знать, что означает int(10) unsigned, вам нужно будет удалить unsigned, прежде чем SQLite примет его. SQLite также не будет знать, что означает ENGINE=InnoDB DEFAULT CHARSET=utf8, поэтому вам также придется удалить это.

Вы, вероятно, столкнетесь с другими вещами, которыми довольна MySQL, но SQLite - нет. Вам придется попробовать его, исправить и попробовать и исправить, пока он не сработает. Или попробуйте найти инструмент, который может переводить между вами базы данных, я всегда делаю такие вещи вручную или используя одноразовые скрипты, поэтому я не знаю никаких инструментов, которые могут вам помочь.

Ответ 2

В основном выше команды для mysql или другой базы данных (большинство из них нужно настроить, чтобы работать с sqlite.Sqlite хранит базу данных в виде файла. В основном при запуске sqlite он создаст файл (если он отсутствует)). Вы можете создать или открыть базу данных, набрав

sqlite3 db

в командной строке. Этот оператор создает или открывает базу данных с именем "db"