[MySQL] Конвертация таблицы из Win-1251 в UTF-8

Конвертирует данные в таблице и меняет саму кодировку таблицы

 

[DB2] linux odbc настройка подключения

yum install unixODBC.x86_64

cd /etc/
[root@host etc]# odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

sudo mkdir -p /opt/IBM/db2/db2clnt1 # Создаем каталог для драйвера
sudo useradd db2clnt1 # создаем пользователя - владельца дравера
sudo chown db2clnt1:db2clnt1 /opt/IBM/db2/db2clnt1 # выдаем права
Качаем нужную нам версию db2_odbc

v10.5fp8_linuxx64_odbc_cli.tar.gz
Выкладываем ее в папку /tmp

sudo -u db2clnt1 -i
cp /tmp/v10.5fp8_linuxx64_odbc_cli.tar.gz /opt/IBM/db2/db2clnt1/
cd /opt/IBM/db2/db2clnt1
tar -zxvf v10.5fp8_linuxx64_odbc_cli.tar.gz
rm v10.5fp8_linuxx64_odbc_cli.tar.gz

sudo vim /etc/odbcinst.ini
[DB2]
Description=ODBC for IBM DB2 10.5-FP8
Driver=/opt/IBM/db2/db2clnt1/odbc_cli/clidriver/lib/libdb2.so
Driver64=/opt/IBM/db2/db2clnt1/odbc_cli/clidriver/lib/libdb2o.so
FileUsage=1
DontDLClose=1

sudo vim /etc/odbc.ini
[DATABASE]
Driver=DB2

sudo -u db2clnt1 vim /opt/IBM/db2/db2clnt1/odbc_cli/clidriver/cfg/db2cli.ini
[DATABASE]
Database=DATABASE
Protocol=TCPIP
Hostname=hostname
ServiceName=50000
uid=User_Name
pwd=XXXXXXXXXXXX
# SCHEMALIST = " 'ZABBIX'"
DeferredPrepare = 1
ConnectTimeout = 25
ReceiveTimeout = 30
LOCKTIMEOUT = 20
AppendForFetchOnly = 1
AutoCommit = 1
ConnectType = 1
CursorHold = 0
TxnIsolation = 1

sudo chmod 640 /opt/IBM/db2/db2clnt1/odbc_cli/clidriver/cfg/db2cli.ini
sudo usermod -a -G db2clnt1 zabbix #Добавляем пользователя zabbix в группу db2clnt1 что бы он мог читать конфиг

isql DATABASE_name
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+

psql

vim ~/.pgpass

chmod 0600 ~/.pgpass

psql -X -h сервер -d база_данных -U имя_пользователя -c 'SELECT * FROM table;'
psql -X -A -t -h сервер -d база_данных -U имя_пользователя -c 'SELECT * FROM table;'

https://postgrespro.ru/docs/postgresql/9.6/libpq-pgpass
https://postgrespro.ru/docs/postgresql/9.6/app-psql.html

MySQL. Match() отменить ограничение на 4 символа

Добавьте строку set variable в группу [mysqld] файла /etc/my.cnf (или другого файла, в котором вы храните настройки сервера):

[mysqld]
ft_min_word_len=2

Рестарт сервера MySQL. Пересоздим индекс FULLTEXT:

mysql> ALTER TABLE wtable DROP INDEX wkey;
mysql> ALTER TABLE wtable ADD FULLTEXT (wkey);

Источник

MySQL ускоряем LIKE() при помощи MATCH()

При большом количестве записей LIKE (Простой пример%) работает оочень долго. Как вариант можно сначала сделать запрос MATCH(),  а потом уже из него лайк.

Чтобы матч заработал, создаем индекс FULLTEXT. Его лучше создавать после занесения данных, тк при его наличии данные добавляются медленнее.
mysql> ALTER TABLE wtable ADD FULLTEXT (wkey);

mysql> SELECT wkey FROM (SELECT * FROM wtable WHERE MATCH (wkey) AGAINST ('"Простой пример"' IN BOOLEAN MODE) ) as t2 WHERE wkey LIKE 'Простой пример %' ;

Учтите, если слово имеет меньше 4х символов MATCH() верент пустой результат при настройках по умолчанию. Как исправить.