Ответы пользователя по тегу SQLite
  • Как массово заполнить таблицу?

    erge
    @erge
    Примус починяю
    Если совсем все сложно с решением выше, хотя оно рабочее (пробуйте разные редакторы, выбирайте какой вам больше подойдет, читайте про регулярные выражения, я не знаю как без них вообще жить ))))

    делайте все из командной строки - скачайте утилиты командной строки sqlite - https://www.sqlite.org/download.html
    Precompiled Binaries for Windows
    sqlite-tools-win32-x86-3410000.zip
    распаковываете утилиты куда вам удобно, прописываете в переменную PATH, ну или например распакуйте в c:\bin

    копируете файл в папку с вашей бд sqlite
    далее запускаете sqlite3.exe в 'этой папке (в консоли, в командной строке!) указывая ему вашу БД, например

    sqlite3.exe my_example_db.sqlt

    далее в командной строке самой sqlite пишете
    create table ru_word (word varchar(100), freq INT);


    PS: порядок полей такой, потому что в файле такой порядок и он грузится как есть, для БД порядок не важен.
    далее

    далее указываете сеператор (разделитель полей в текстовом файле)
    .separator " "
    грузите файл в таблицу
    .import ru_50k.txt ru_word

    все!

    в итого будет примерно так (в командной строке!):
    : переходим в папку с БД, там же должен быть файлru_50k.txt
    cd C:\tmp
    
    : открываем БД в sqlite3
    c:\bin\sqlite3.exe my_example_db.sqlt
    SQLite version 3.41.0 2023-02-21 18:09:37
    Enter ".help" for usage hints.
    sqlite> create table ru_word (word varchar(100), freq INT);
    sqlite> .tables
    ru_word
    sqlite> .separator " "
    sqlite> .import ru_50k.txt ru_word
    sqlite> SELECT count(*) FROM ru_word;
    50000
    sqlite> SELECT MAX(freq) FROM ru_word;
    3854593
    sqlite> SELECT * FROM ru_word LIMIT 10;
    я 3854593
    не 3244771
    что 2665565
    в 2212420
    и 2179689
    ты 2067418
    это 1999607
    на 1240437
    с 1128276
    он 966203
    sqlite> .quit


    PPS: научитесь пользоваться поиском, например загрузка csv в sqlite и т.п. и т.д. etc
    Ответ написан
    1 комментарий
  • Как получить LastInsertRowId?

    erge
    @erge
    Примус починяю
    попробуйте после вставки выполнить запрос:

    select last_insert_rowid();

    см. пример dbfiddle
    Ответ написан
  • Как получить следующее значение из базы данных?

    erge
    @erge
    Примус починяю
    получаете rowid нужной записи
    select rowid from numbers where num = 10;

    удаляете запись
    delete from numbers where num = 10;

    выбираем следующую запись по полученному rowid + 1

    конкретно в данном случае rowid записи 10 был равен 4 и + 1, следующая запись с rowid >=5 :
    -- выбираем слудющую запись по rowid(10) + 1 -> 4+1
    select num
      from numbers
      where rowid >= 5 -- 4+1
      order by rowid
      limit 1;


    см. пример на dbfiddle
    Ответ написан
    Комментировать