Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос

galaxy

  • 740
    вклад
  • 0
    вопросов
  • 914
    ответов
  • 50%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • COPY в Postgresql?

    galaxy @galaxy
    Слейте все в один файл.
    Под *nix одной командой:
    tail -qn +2 files/*.txt > data.csv
    (если все файлы в одной папке files)

    Ну либо берете список файлов (из вывода dir / ls) и, допустим, в продвинутом текстовом редакторе дописываете к каждому названию куски команды COPY. Получится один большой скрипт
    Ответ написан 02 мая 2022
    1 комментарий
    1 комментарий
  • SQLite3, что делать?

    galaxy @galaxy
    SELECT rownum FROM (SELECT row_number() over(ORDER BY rate DESC) rownum, id FROM users) q WHERE id = ?
    Ответ написан 27 апр. 2022
    1 комментарий
    1 комментарий
  • Как вернуть записи из каждой группы с минимальной датой создания?

    galaxy @galaxy
    возвращать одно рандомное из дублей, но тогда есть вероятность вывода неправильного результата

    а в чем неправильность такого результата?

    В любом случае, группировка и джойн тут избыточны:
    SELECT DISTINCT ON (project_id) *
      FROM tasks
     WHERE tasks.id = ANY (...)
     ORDER BY project_id, created
    Ответ написан 27 апр. 2022
    2 комментария
    2 комментария
  • Как оптимизировать COUNT(*)?

    galaxy @galaxy
    Будет ли от этого оптимизация или будет еще хуже?

    В описанной ситуации, скорее всего, будет.
    Вот пример для таблицы на 5 млн строк:
    > EXPLAIN ANALYZE select count(*) from u where val like 'xz%';
    -> Aggregate: count(0)  (actual time=358.829..358.829 rows=1 loops=1)
        -> Filter: (u.val like 'xz%')  (cost=1081.88 rows=4995) (actual time=0.388..358.196 rows=4995 loops=1)
            -> Index range scan on u using u_val  (cost=1081.88 rows=4995) (actual time=0.383..356.709 rows=4995 loops=1)
    
    > EXPLAIN ANALYZE select count(*) from (select id from u where val like 'zx%' limit 11) q;
    -> Aggregate: count(0)  (actual time=1.609..1.609 rows=1 loops=1)
        -> Table scan on q  (actual time=0.002..0.005 rows=11 loops=1)
            -> Materialize  (actual time=1.594..1.601 rows=11 loops=1)
                -> Limit: 11 row(s)  (actual time=0.089..1.560 rows=11 loops=1)
                    -> Filter: (u.val like 'zx%')  (cost=1183.58 rows=5465) (actual time=0.088..1.555 rows=11 loops=1)
                        -> Index range scan on u using u_val  (cost=1183.58 rows=5465) (actual time=0.082..1.537 rows=11 loops=1)


    Ускорение более чем в 200 раз. Разумеется, тут важно, что строк, подходящих под условие, в таблице значительно больше 10 - в данном случае 5.5 тысяч. Если подходящих строк будет в пределах нескольких десятков, разница будет не особо заметна.
    Ответ написан 23 апр. 2022
    Комментировать
    Комментировать
  • Как сделать рекурсивный запрос с возвращением всех пройденных элементов?

    galaxy @galaxy
    with recursive q as (
        select * from tes where from_id = 1
         union all
        select tes.* from tes, q where tes.from_id = q.to_id
    )
    select * from q order by from_id, to_id

    https://www.db-fiddle.com/f/4jyoMCicNSZpjMt4jFYoz5/4445
    Ответ написан 21 апр. 2022
    1 комментарий
    1 комментарий
  • При обновлении данных в БД sqlite3, обновляет только 1 строку, как сделать, что бы обновляло сразу все?

    galaxy @galaxy
    UPDATE stata
       SET coins = coins + dohod

    все.
    Ответ написан 15 апр. 2022
    Комментировать
    Комментировать
  • Ошибка при запросе к БД, на хостинге, как быть?

    galaxy @galaxy
    Версия какая mysql на хостинге? Судя по этому - 5.5.x.
    Определять же функциональные зависимости между колонками mysql научился в версии 5.7

    С другой стороны, я вообще не понимаю смысл этого запроса - никаких агрегаций там все равно нет, зачем группировка?

    Вероятно, получить результат как на локальной базе поможет выключение only_full_group_by из sql_mode
    Ответ написан 14 апр. 2022
    Комментировать
    Комментировать
  • Зачем нужен корневой сертификат?

    galaxy @galaxy
    Это вопрос доверия. Сертификаты могут быть подписаны другими сертификатами, это гарантирует целостность цепочки, но в итоге все это должно быть заверено стороной, которой вы (браузер) безусловно доверяет.

    Если сайт вам сам присылает корневой сертификат, как вы можете ему доверять?

    Распространение таких корневых точек доверия - важная часть построения всей системы PKI (Public key infrastructure), и это не криптографическая проблема, а социально-техническая.
    Ответ написан 13 апр. 2022
    1 комментарий
    1 комментарий
  • Есть ли рабочий способ оплаты vps cloud от hetzner с помощью локальной карты от 10 апреля 2022?

    galaxy @galaxy
    Через SWIFT предоплату они принимают. Но сбер тут, конечно, мимо
    Ответ написан 12 апр. 2022
    2 комментария
    2 комментария
  • Почему выдает ошибку literal does not match format string при добавлении даты?

    galaxy @galaxy
    Попробуйте TO_DATE:
    INSERT INTO people (last_name, first_name, sex, birthday)
    VALUES ('Иванов', 'Иван', 'm', to_date('1999-04-04', 'yyyy-mm-dd'));
    Ответ написан 11 апр. 2022
    Комментировать
    Комментировать
  • Почему rows в explain будто бы удваиваются?

    galaxy @galaxy
    Значения rows в выводе EXPLAIN по определению неточные - это оценка, исходя из статистики.
    Если mysql достаточно свежий, можно сделать EXPLAIN ANALYZE - тогда запрос будет реально выполнен и покажет реальные значения для rows.
    Если EXPLAIN сильно ошибается с оценками, стоит сделать ANALYZE TABLE и, возможно, поиграться с настройками статистики для таблицы (UPDATE HISTOGRAM)
    Ответ написан 08 апр. 2022
    Комментировать
    Комментировать
  • Как разблокировать колонки в postgresql?

    galaxy @galaxy
    Нет первичного ключа (primary key), вот и блокирует. Это не Excel.

    Хотите как в экселе - ну и экспортируйте в него данные, потом обратно залейте
    Ответ написан 08 апр. 2022
    3 комментария
    3 комментария
  • Как исключить определенные значения с GROUP_CONCAT mysql?

    galaxy @galaxy
    group_concat(case when status <> 0 then status end)


    https://www.db-fiddle.com/f/djHBDhjYCtT7q1mtFaqF1N/0
    Ответ написан 08 апр. 2022
    Комментировать
    Комментировать
  • Curl_multi_init где ошибка?

    galaxy @galaxy
    $response откуда возьмется?
    curl_multi_getcontent делать надо.
    Пример тут
    Ответ написан 01 апр. 2022
    8 комментариев
    8 комментариев
  • Почему str.__and__ отсутствует в str, если "a" and "b" работает?

    galaxy @galaxy
    __and__ эмулирует побитовую конъюнкцию (побитовый AND), которая в питоне делается так:
    a & b
    Ответ написан 01 апр. 2022
    1 комментарий
    1 комментарий
  • Найти поле по значению pgadmin?

    galaxy @galaxy
    Дурацкая задача какая-то...
    Ну допустим, если база небольшая, то pg_dump в текстовый формат + grep
    Ответ написан 01 апр. 2022
    Комментировать
    Комментировать
  • Как получить индексы цифр в строке?

    galaxy @galaxy
    Позиция цифры (т.е. индекс начала найденной выражением строки) можно получить из m.start().
    UPD: Для повторного поиска совпадений есть фунцкия re.finditer():
    [m.start() for m in re.finditer("\d", s1)]

    Более говнокодистый вариант через цикл и search

    search ищет только первое совпадение, надо дальше циклом прогонять, примерно так:
    idxs = []
    l = 0
    while m := re.search("\d", s1):
    	idxs.append(l + m.start())
    	l += m.end()
    	s1 = s1[m.end():]



    Но вообще-то регулярные выражение для поиска цифр - перебор. Хватит и этого:
    [i for i, c in enumerate(s1) if c >= '0' and c <= '9']
    Ответ написан 29 мар. 2022
    Комментировать
    Комментировать
  • Как правильно обеспечить уникальность записей в тиблице?

    galaxy @galaxy
    если оставить всё, как есть, то primary key будет обновляться при каждой вставке
    не ключ, а внутренний объект (аналог sequence в других СУБД)
    из-за чего, во-первых, он когда-то закончится
    что, прям так много вставок? сделайте поле BIGINT
    таблица постоянно будет переиндексироваться (старая с маленьким ключом запись при обновлении будет "подниматься" наверх)
    вообще не понял, что это значит

    как умные люди решают вопрос уникального кортежа в такой таблице?
    в описанном случае не вижу никаких проблем использовать insert ... on duplicate key update
    Ответ написан 28 мар. 2022
    8 комментариев
    8 комментариев
  • Я наследуюсь от двух классов и через метод super() пытаюсь из проинициализировать, но выдает ошибку. Почему?

    galaxy @galaxy
    class A:
        def __init__(self, value):
            print("A::__init__")
            self.value = value
    
    
    class B:
        def __init__(self, name):
            print("B::__init__")
            self.name = name
    
    
    class C(A, B):
        def __init__(self, name, value):
            super().__init__(value)
            super(A, self).__init__(name)
    
    print(C.__mro__)
    t = C('Name', 0)


    При вызове super(Class, obj).method() ищется метод родительского класса, правее Class по цепочке mro:
    (<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>)


    super() - в данном случае равносильно super(C, self) - поиск начнется с A
    Ответ написан 28 мар. 2022
    2 комментария
    2 комментария
  • Как запретить ввод в таблицу пустого поля?

    galaxy @galaxy
    Где вы увидели пустой id?

    BIGSERIAL - равносильно полю типа BIGINT с DEFAULT значением из автоматически создаваемого сиквенса (сделайте \d+ myTable в psql для интереса), так что если вы не указываете значение для id в INSERT, оно берется из сиквенса.
    По этой же причине
    INSERT INTO myTable(lastName) VALUES('upsertedLastNameOnly orger') ON CONFLICT (id)
    не имеет смысла, т.к. конфликта по id тут быть не может.

    В общем, что конкретно вы хотите? Поле id у вас заполняется и не может быть пустым
    Ответ написан 27 мар. 2022
    Комментировать
    Комментировать
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • Следующие →
Самые активные сегодня
  • puzaka
    • 10 ответов
    • 0 вопросов
  • Dr. Bacon
    • 9 ответов
    • 0 вопросов
  • Дмитрий Л
    • 6 ответов
    • 0 вопросов
  • MoralGray
    MoralGray
    • 6 ответов
    • 0 вопросов
  • sergey-gornostaev
    Сергей Горностаев
    • 6 ответов
    • 0 вопросов
  • CityCat4
    CityCat4
    • 5 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации