bonjour,
j'ai un script sql pour créer des tables pour la gestion des livres. le script marche bien avec mysql. savez-vous s'il y a un moyen pour exécuter un script sql dans sqlite sans devoir à copier les instructions une par une ?
merci.
Version imprimable
bonjour,
j'ai un script sql pour créer des tables pour la gestion des livres. le script marche bien avec mysql. savez-vous s'il y a un moyen pour exécuter un script sql dans sqlite sans devoir à copier les instructions une par une ?
merci.
Bonjour New11,
je pense que tu veux dire : lancer le script entièrement et non pas ligne par ligne.
Réponse : oui, bien sur !
Télécharge le programme en ligne de commande (pour DOS ou Linux) depuis le site original, puis lance-le depuis une session DOS ou shell (je vais prendre la session DOS comme exemple).
Voici comment créer une nouvelle base (nommée "baselivre.db") et comment lire tout un fichier script en sql : "baselivre.sql" :
Par contre, mysql et sqlite ont des syntaxes différentes. Il te faudra corriger le script afin de le rendre plus SIMPLE ;)Code:
1
2sqlite.exe baselivre.db .read baselivre.sql
Je donne un (long) exemple, soit le script de création de tables phpmyadmin v 2.11.6 :
Ignorer :
Modifier la table suivanteCode:
1
2
3
4
5 DROP DATABASE IF EXISTS `phpmyadmin`; CREATE DATABASE `phpmyadmin`; USE phpmyadmin; GRANT SELECT, INSERT, DELETE, UPDATE ON `phpmyadmin`.* TO 'pma'@localhost;
en :Code:
1
2
3
4
5
6
7
8 CREATE TABLE `pma_bookmark` ( `id` int(11) NOT NULL auto_increment, `dbase` varchar(255) NOT NULL default '', `user` varchar(255) NOT NULL default '', `label` varchar(255) NOT NULL default '', `query` text NOT NULL, PRIMARY KEY (`id`) ) TYPE=MyISAM COMMENT='Bookmarks';
Un autre exemple :Code:
1
2
3
4
5
6
7 CREATE TABLE `pma_bookmark` ( `id` int(11) PRIMARY KEY NOT NULL autoincrement, `dbase` varchar(255) NOT NULL default '', `user` varchar(255) NOT NULL default '', `label` varchar(255) NOT NULL default '', `query` text NOT NULL );
A modifier en :Code:
1
2
3
4
5
6
7
8
9
10
11
12 CREATE TABLE `pma_column_info` ( `id` int(5) unsigned NOT NULL auto_increment, `db_name` varchar(64) NOT NULL default '', `table_name` varchar(64) NOT NULL default '', `column_name` varchar(64) NOT NULL default '', `comment` varchar(255) NOT NULL default '', `mimetype` varchar(255) NOT NULL default '', `transformation` varchar(255) NOT NULL default '', `transformation_options` varchar(255) NOT NULL default '', PRIMARY KEY (`id`), UNIQUE KEY `db_name` (`db_name`,`table_name`,`column_name`) ) TYPE=MyISAM COMMENT='Column information for phpMyAdmin';
etc...Code:
1
2
3
4
5
6
7
8
9
10
11 CREATE TABLE `pma_column_info` ( `id` int(5) PRIMARY KEY NOT NULL autoincrement, `db_name` varchar(64) NOT NULL default '', `table_name` varchar(64) NOT NULL default '', `column_name` varchar(64) NOT NULL default '', `comment` varchar(255) NOT NULL default '', `mimetype` varchar(255) NOT NULL default '', `transformation` varchar(255) NOT NULL default '', `transformation_options` varchar(255) NOT NULL default '' ); CREATE UNIQUE INDEX db_name_idx ON `pma_column_info` (`db_name`,`table_name`,`column_name`);
Ce n'est pas très difficile, mais cela demande un peu de travail et quelques essais.
a+
super. merci.
et dire que j'ai essayé la plupart des commandes (dot command) sans voir la commande .read FILENAME.
c'est peut-être à cause de l'excitation.
je vais essayer tout.
Heureux d'avoir pu t'aider...
Pour ma part, j'utilise SQLite SURTOUT en ligne de commande. C'est un outil (une sorte de couteau suisse) hyper pratique.
Je l'utilise comme un filtre d'importation de fichiers csv et d'étude de morceaux SQL pour des structures ou bases plus complexes (Oracle principalement, MySql occasionnellement).
Il m'arrive de jouer avec SQLite comme avec un casse-tête ou un Sudoku. Voici par exemple un délire que j'ai eu avec un ami sur la toile :
Un jour, il me cite un post sur un forum boursier : untel prétendait qu'il suffisait <<d'avoir en portefeuille les 10 meilleures progressions du CAC40 à chaque début de mois pour surperformer ce dernier>>. C'est typiquement un problème que peut résoudre SQLite et je suis parti en live... pour réaliser un simulateur.
J'ai donc trouvé un site ou j'ai téléchargé les cours de 2005 à 2008. J'ai également constitué la liste des 40 valeurs du CAC. Nous avons donc une table de valeurs et une table de cours. Reste à gérer le portefeuille.
Voici le raisonnement que j'ai simulé à l'époque :
C'est complexe mais passionnant : deux soirs de réglage des scripts et le moteur fonctionnait !Citation:
Gestion du portefeuille :
- Le portefeuille est initialisé à 15.000 euros
- Les frais (vente/achat) sont de 0.65%, avec un minimum de 8 euros.
- Le portefeuille comporte toujours 10 lignes.
- on vend les lignes à l'ouverture du second jour du mois boursier.
- on achète les lignes à l'ouverture du troisieme jour du mois boursier.
- on achète une ligne pour un montant maximum estimé à 0.80 * liquide / NombreLignesVides
Liquide = le reste de liquide prêt à être dépensé.
NombreLignesVides = 10 - Nombre de ligne encore en portefeuille
- Ainsi le portefeuille initial est composé de 10 lignes de 8% de 15.000 euros chacunes.
Gestion des actions :
- Il peut y avoir des doublons de lignes (même action deux fois)
- une ligne est vendue lorsque elle a progressée de +/- 15% depuis son PR.
- le test de progression est effectué le soir du premier jour boursier,
- la vente est effectuée à l'ouverture le lendemain
- les achats sont effectués à l'ouverture le lendemain de la vente
- la décision d'achat s'effectue par sélection des 10 meilleures progressions depuis le premier jour du mois précédent.
En final,
- tant qu'une action ne tombe pas de 15% on la garde.
- tant qu'une action ne progresse pas de 15% on la garde.
- on peut racheter une action que l'on vient de jetter si elle figure encore parmis les leaders du marché.
Cela permet de renforcer une action massacrée injustement et d'alléger une action qui grimpe trop.
Je ne vais pas donner ici les listings complets, mais je les ai mis en chargement dans ce fichier zip :
http://home.datacomm.ch/bigane/sqlite/cac40/cac40.zip
Les scripts sont également visible directement pour une lecture en ligne :
http://home.datacomm.ch/bigane/sqlite/cac40/00.sql
http://home.datacomm.ch/bigane/sqlite/cac40/01.sql
http://home.datacomm.ch/bigane/sqlite/cac40/02.sql
Même si le résultat et les tests sont peu lisibles, ils montrent (selon moi) la puissance d'un petit utilitaire de rien du tout.
Voici la sortie du script 00.sql (importation des valeurs)
Puis le 01.sql (création du portefeuille) :Citation:
Ouverture de la base ...
SQLite version 3.6.2
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .read 00.sql
Vidage de la base...
Chargement SRD annee 2005...
Chargement SRD annee 2006...
Chargement SRD annee 2007...
Chargement SRD annee 2008...
Ok, 175688 lignes lues.
Chargement valeurs du CAC40...
Indexation...
Extraction des cours des valeurs du CAC 40...
Suppression de la table temporaire...
Resultat de l'importation :
Table "Cac" = valeurs du CAC : 40 lignes
Table "Cours" = cours du CAC : 33618 lignes
Ok.
Et enfin le 02.sql qui simules les transactions à chaque fois qu'on le lance :Citation:
sqlite> .read 01.sql
Creation du portefeuille ...
Ok.
J'ai effectué de nombreux tests et corrections ensuite, donc les résultats ne sont plus exactement ceux d'origine. Mais le principe est instructif pour celui qui se creuse un peu la tête.Citation:
sqlite> .read 02.sql
Le mois suivant ...
Decisions:
1 20050203 Achat FR0000120354 8 146.5
2 20050203 Achat FR0000121972 21 58.75
3 20050203 Achat FR0000120172 30 40.3
4 20050203 Achat NL0000235190 52 23.54
5 20050203 Achat FR0000125486 11 109.9
6 20050203 Achat FR0000121485 16 78.2
7 20050203 Achat FR0000120537 15 80.3
8 20050203 Achat FR0000130213 22 56.8
9 20050203 Achat FR0000120529 57 21.58
10 20050203 Achat FR0000125007 26 48
Lignes:
FR0000120354 8 1180 8 147.5
FR0000121972 21 1241.77 8.02 59.13
FR0000120172 30 1217 8 40.57
NL0000235190 52 1232.08 8 23.69
FR0000125486 11 1216.9 8 110.63
FR0000121485 16 1259.33 8.13 78.71
FR0000120537 15 1212.5 8 80.83
FR0000130213 22 1257.72 8.12 57.17
FR0000120529 57 1238.06 8 21.72
FR0000125007 26 1256.11 8.11 48.31
Portefeuille:
2688.53 12226.89 14915.42 80.38 2005 2 1 20050201
20050200 10 0
Bonne lecture, bons scripts... et gains à la bourse pour les plus téméraires !
lol
a+
PS: pour les curieux mais pas trop voici le résultat :
Parti de 15.000 euros, le portefeuille monte rapidement à 20.000 euros en 2006... 24.000 en juillet 2007... puis il subit la crise comme tout le monde ...
18.000 en janvier 2008... 17.000 en Mai 2008 et ... plus de données... mais tout le monde connait le résultat depuis Mai 2008. Moralité, ce n'est jamais aussi simple, sinon il n'y aurait pas de marché.
a+