J'ai besoin d'intimité. Non pas parce que mes actions sont douteuses, mais parce que votre jugement et vos intentions le sont.
5138 links
update sqlite_sequence set seq=(select max(macolonne) from matable) where name = 'matable'
Si l'on souhaite ordonner de façon naturelle une colonne avec sqlite (c'est à dire en prenant en compte les accents et les nombres), il y a deux petits hacks à appliquer.
Le premier consiste à transformer la valeur en décimal, ce qui donne le code :
CAST(colonne AS DECIMAL)
Le deuxième est de créer une fonction sqlite via pdo, qui va prendre en compte la langue utilisée (ici, le français et ses accents). Cette fonction est à écrire en amont de la requête :
$pdo->sqliteCreateFunction('locale',
function ($data, $locale = 'root')
{
static $collators = array();
if (isset($collators[$locale]) !== true)
{
$collators[$locale] = new \Collator($locale);
}
return $collators[$locale]->getSortKey($data);
}
);
Ainsi, la recherche dans sqlite va donner :
SELECT * FROM matable WHERE id!=? ORDER BY CAST(macolonne AS DECIMAL), locale(macolonne, 'fr-FR')
On peut également utiliser une autre langue pour le même résultat.
Je copie-colle l'astuce donnée par Seb :
OH ! Je me garde cette astuce: Elle permet d'utiliser SQLite pour lancer une requête sur un fichier CSV et d'en récuperer le résultat. Le tout en une seule ligne de commande.
sqlite3 :memory: -cmd '.mode csv' -cmd '.import taxi.csv taxi' 'SELECT passenger_count, COUNT(*), AVG(total_amount) FROM taxi GROUP BY passenger_count'
This uses the special :memory: filename to open an in-memory database. Then it uses two -cmd options to turn on CSV mode and import the taxi.csv file into a table called taxi. Then it runs the SQL query.
EDIT: Voir aussi https://dinedal.github.io/textql/
These are the most popular functions missing in SQLite:
crypto: cryptographic hashes like MD5 or SHA-256.
fileio: read and write files and catalogs.
fuzzy: fuzzy string matching and phonetics.
ipaddr: IP address manipulation.
json1: JSON functions.
math: math functions.
re: regular expressions.
stats: math statistics — median, percentiles, etc.
text: string functions.
unicode: Unicode support.
uuid: Universally Unique IDentifiers.
vsv: CSV files as virtual tables.There are precompiled binaries for Windows, Linix and macOS.
Applications libres et kiss en PHP 5 & SQLite 3.
Avantage d'utiliser SQLite plutôt qu'un format de fichier à vous:
- accès en lecture/écriture plus rapide.
- écritures atomiques (moins de risques de corruption des données)
- possibilité de requêtage (vous pouvez demander à SQLite d'aller chercher juste les données qui vous intéressent dans le fichier. Vous n'avez pas à lire tout le fichier d'un coup)
- possibilité de modification partielle (donc plus rapide, car il n'y a pas TOUT le fichier à ré-écrire pour modifier juste une donnée)
- stockage plus efficace (le stockage de données binaires dans une base SQLite est plus efficace que de les écrire dans de multiples fichiers, à cause de la taille des blocs disque des systèmes de fichier).
Pour requêter sur plusieurs bases en même temps.
Via SebSauvage
Site très bien fait avec des exemples parlant et simples.
Un visualiseur de fichier sqlite en ligne
via KraZhtest
Merci pour le partage. Je recopie l'astuce ici :
Réparer une base sqlite corrompue.
So, something's broken.
I executed a query like select * from {table}
for each table in the database and all of them was executed successfully except one. This one caused the exactly same error I saw before -database disk image is malformed
. But in spite of error I got data from this table.
So if I can read data then I can recreate my database.
I started searching for a way how to dump data from the database into a SQL-script with INSERTs. This post helped me a lot.
I needed to download SQLite shell. This tool allows to export data in many forms including INSERTs.
I run sqlite3.exe storage.data
where "storage.data" is my corrupted database file.
The following script exports all content (as INSERTs) with schema into "dump_all.sql" file:
sqlite> .mode insert
sqlite> .output dump_all.sql
sqlite> .dump
Then exit (Ctrl-C, Ctrl-Z or ".exit") and run again: sqlite3.exe storage.fixed.data
, where "storage.fixed.data" is name of non-existing file for my resurrected database.
The following script reads commands from "dump_all.sql" script file and recreates all database.
sqlite> .read dump_all.sql
After this procedure I got a new database file with all content from the corrupted file.
Petit utilitaire bien sympa et kiss pour administrer une base SQLite
Un forum léger utilisant sqlite pour le stockage
Spécial Bronco : coudifie ça également. On n'y pense pas forcément, mais c'est très puissant comme concept je trouve.