Сообщения

Показаны сообщения с ярлыком "mysql"

Как преобразовать строку в массив в ClickHouse / How to transform string to array in ClickHouse

Сегодня я столкнулся с проблемой, что в документации ClickHouse нет функции преобразования строки в массив. Поискав в StackOverflow , я тоже ничего внятно не нашел. Перед прочтением рекомендую подписаться на мой телеграмм канал, где вы сможете найти актуальные новости, примеры и хаки в мире разработки: @asanov_tech Попробую объяснить на примере: У вас есть некая колонка data типа String, которая хранит JSON: {"user_id":123456,"item_ids": [1203,1204,1205] ,"count":5} Вы хотите преобразовать поле item_ids в массив, чтобы в дальнейшем с ним производить любые функции по работе с массивами ( ссылка на документацию в конце поста ). Как преобразовать строку в массив из JSON Строка может содержать не в отдельной колонке, а, например, в поле json. Пример ниже продемонстрирует как этого добиться: С помощью функции visitParamExtractRaw достать значение поля item_ids в сыром виде: visitParamExtractRaw( data ,  'item_ids' ) С помощью функции  trim  убрать лишни...

Удалить все таблицы в базе данных Mysql | Drop all tables in mysql

Всем привет! Сегодня я вам кратко расскажу, как удалить все таблицы разом в MySQL, не удаляя базу данных. Есть два способа это сделать. Самый простой способ удалить таблицы MySQL, заключается в использовании mysqldump: mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | grep ^DROP | mysql -u[USERNAME] -p[PASSWORD] [DATABASE] Переменные, которые указаны выше, [USERNAME], [PASSWORD] и [DATABASE] это опции вашей базы данных. Вы можете менять USERNAME, PASSWORD и DATABASE, как вам угодно. Второй способ, используя некоторые конструкции MySQL для формирования списка таблиц и последующего их удаления SET FOREIGN_KEY_CHECKS = 0 ; SET @ tables = NULL ; SELECT GROUP_CONCAT ( table_schema , '.' , table_name ) INTO @ tables FROM information_schema . tables WHERE table_schema = 'database_name' ; -- specify DB name here. SET @ tables = CONCAT ( 'DROP TABLE IF EXISTS ' , @ tables ); PREPARE stmt FROM @ tables...

MySQL: Загрузка данных в таблицу из файла

Вам когда-нибудь приходилось загружать данные из файла в таблицу из файла? Если нет, то я попробую кратко рассказать вам об одном способе это сделать. Загрузить данные в таблицу из файла LOAD DATA INFILE 'data.csv' INTO TABLE my_table Такая конструкция поможет вам загрузить данные из файла в вашу таблицу. Если вы хотите загрузить отформатированные данные, скажем разделенные запятой, то вам поможет следующая конструкция: LOAD DATA INFILE 'data.csv' INTO TABLE my_table FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n' Что это означает? Искать концы строк в виде символов '\r\n' Разбивать строки на поля по символам запятой (,). Ожидать, что поля могут быть заключены в символы цитирования. Интерпретировать встречающиеся символы табуляции, новой строки или '\', предваренные '\', как литералы, являющиеся частью значения поля. Конструкция LOAD...

SQL группировка данных по кванту значений.

Всем привет, недавно встала задача выборки данных по квантам значений. Объясню ситуацию: Есть таблица payment(платежи): id_user [ int ] sum [ int ] date [ date ] SQL выборка данных по кванту значений. sum (сумма платежа) может быть относительно любой от 0 и до 100000, например. Задача:  Нужно сгруппировать вывод данных по сумме с квантом в 50 рублей. Например: 0-49   рублей - заплатили 14 пользователей. 50-99   рублей - 59 пользователей 100-150   рублей  - 147 пользователей и т.д. до конца (до 100000  рублей  ) Нужно сформировать SQL-запрос на MySQL. Ответ очень прост: select count ( id_user ), concat_ws ( "..." , floor ( sum / 50 )* 50 , ( floor ( sum / 50 )+ 1 )* 50 - 1 ) as interva_l from payment group by floor ( sum / 50 ); Группируем по дополнительному вычисляемому полю (делением на 50) Вот и весь ответ. Надеюсь, это кому-нибудь поможет.

Как сменить пароль пользователя, администратора на vBulletin через MySQL

Надеюсь, кому-то я помогу тем, что дам правильный ответ на насущный вопрос: Как сменить пароль пользователя, администратора на vBulletin через MySQL Ответ прост, один SQL запрос: UPDATE user  set password = MD5(concat(MD5('<NEWPASSWORD>'), user.salt))  WHERE userid = <USERID> Нужно просто с MD5 пароля использовать соль пользователя, которая находится в табличке _user. Ссылка на оригинальный ответ на форуме vbulletin.com:  http://www.vbulletin.com/forum/forum/vbulletin-4/vbulletin-4-installations-and-upgrades/367091-direct-database-query-to-reset-admin-password

Экспорт одной таблицы базы данных или mysqldump одной таблицы (MySQL)

Как экспортировать одну таблицу из базы данных MySQL, используя mysqldump Например, Вам нужно произвести экспорт всего одной таблицы из всей базы данных MySQL, существует довольно простая утилита mysqldump . Синтаксис довольно прост: mysqldump --user= [имя пользователя]  --host= [имя хоста или ip-адрес]  --password= [пароль] [имя базы данных] [имя таблицы] > имя-файла.sql Например: mysqldump --user-root --host=127.0.0.1 --pasword=mypassword mydbname table1 > report1.sql Вот и все, все оказалось просто. Весь дамп текущей таблицы, будет находиться в файле: report1.sql Экспорт структуры таблицы MySQL Если Вам нужно экспортировать только структуру таблицы базы данных, а сами данные не нужны, то нужно просто добавить флаг --no-data . Вот пример: mysqldump --user-root --host=127.0.0.1 --pasword=mypassword --no-data mydbname table1 > report2.sql Теперь в файле report2.sql будет только структура таблицы table1. Экспорт несколь...

Как увеличить max_allowed_packet (Linux, Debian)

Нужно увеличить максимально возможный размер SQL-файла при его выполнении на сервере? Вам нужно изменить файл: my.cnf Откройте его:  nano /etc/mysql/my.cnf Увеличить  max_allowed_packet  Найдите там [mysqld]  на следующей строке добавьте: max_allowed_packet = 64M Если такая строка уже там существует, то просто измените размер (указывается в мегабайтах). После всего вышеперечисленного просто перезагрузите mysql-сервер: /etc/init.d/mysql restart mysql, linux, debian,  max_allowed_packet  

INSERT ... ON DUPLICATE KEY UPDATE или Как вставить строку если она не существует и обновить в противном случае (MySQL)

Добрый день ) Уважаемые программисты, наверняка каждый из Вас сталкивался с проблемой вставки данных в БД, если строки не существует и обновление ее, если таковая уже есть. Как вставить данные в базу данных MySQL, если их не существует и обновить в противном случае Наверняка Вы часто использовали конструкцию типа: $result  =  mysql_query ( "SELECT `uid`, `text` FROM `t_userinfo` WHERE `uid`='". $uid ."'" ); if ( mysql_num_rows ( $result ) >0 ) { // Если строка имеется, то обновляем    mysql_query ( "UPDATE `t_userinfo` SET `text`='". $newtext ."' WHERE `uid`='". $uid ."'" ) ; } else { // Если строки нет, то добавляем новое значение в БД    mysql_query ( "INSERT INTO `t_userinfo` SET `text`='". $newtext ."',`uid`='". $uid ."'" ) ; } Немного муторно, не правда ли? И производительность немного страдает, все таки столько действий. Допустим, что эта таб...