web-dev-qa-db-fra.com

Comment créer un fichier de base de données SQLite3 à l'aide d'un fichier de commandes SQL?

J'ai un fichier qui contient des commandes SQL, quelque chose qui ressemble à ceci:

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
    ...
    ...
    ...

Je voudrais utiliser ces commandes pour créer un fichier de base de données SQLite3 afin de l'utiliser facilement avec Python.

Comment faire ça sur Ubuntu?

23
user1639431

Ce n'est pas tout à fait un fichier SQL, qui contient un tas de choses spécifiques à MySQL dont certaines seront acceptées par SQLite et d'autres non. Nous allons commencer par le haut.

Vous n'avez pas besoin de create database Ou use avec SQLite. Si vous souhaitez créer une base de données, il suffit de la nommer lorsque vous exécutez sqlite3 À partir de la ligne de commande:

$ sqlite3 db_name.sqlt < your_sql.sql

Si db_name.sqlt Existe alors il sera utilisé, s'il n'existe pas alors il sera créé. Donc create database Et use sont impliqués par la façon dont vous exécutez sqlite3. Vous devrez peut-être utiliser une extension différente en fonction de ce que Python veut voir.

Les astuces pour citer sont un MySQLism, les guillemets doubles sont le mécanisme de citation standard pour les identificateurs. Heureusement pour vous, SQLite les acceptera afin que vous puissiez les laisser seuls.

SQLite ne saura pas ce que signifie int(10) unsigned, vous devrez supprimer le unsigned avant que SQLite l'accepte. SQLite ne saura pas non plus ce que signifie ENGINE=InnoDB DEFAULT CHARSET=utf8, Vous devrez donc également le supprimer.

Vous rencontrerez probablement d'autres choses dont MySQL est satisfait, mais SQLite ne l'est pas. Vous devrez l'essayer et le réparer et l'essayer et le réparer jusqu'à ce que cela fonctionne. Ou essayez de trouver un outil qui peut traduire entre les bases de données pour vous, je fais toujours ce genre de choses à la main ou en utilisant des scripts uniques, donc je ne connais aucun outil qui puisse vous aider.

44
mu is too short

Les commandes ci-dessus concernent essentiellement mysql ou une autre base de données (la plupart d'entre elles doivent être modifiées pour fonctionner avec sqlite. Sqlite stocke la base de données sous forme de fichier. Fondamentalement, lorsque vous démarrez sqlite, il crée un fichier (s'il n'est pas présent). Vous peut créer ou ouvrir une base de données en tapant

sqlite3 db

sur la ligne de commande. Cette instruction crée ou ouvre une base de données nommée "db"

0
ravdhaw