Kategori arşivi: MySQL

MySQL de tarih kaydırma

mysql üzerinde varchar olarak tutulan tarih bilgisini (“yyyymmdd”) farklı bir tarihe kaydırma örnekleri:

SELECT wordoftheday, DATE_FORMAT ( DATE_ADD( STR_TO_DATE(wordoftheday,'%Y%m%d') , INTERVAL 3 YEAR), '%Y%m%d') AS newwordoftheday FROM crosslanguage WHERE wordoftheday<>'' ORDER BY wordoftheday DESC

wordoftheday newwordoftheday
20171201 20201201
20171130 20201130
20171130 20201130
20171129 20201129

Tarihleri 3 yıl ötele:

UPDATE `crosslanguage` SET `wordoftheday` = DATE_FORMAT ( DATE_ADD( STR_TO_DATE(wordoftheday,'%Y%m%d') , INTERVAL 3 YEAR), '%Y%m%d') WHERE wordoftheday<>''

Tarihleri 2 ay ötele:

UPDATE `crosslanguage` SET `wordoftheday` = DATE_FORMAT ( DATE_ADD( STR_TO_DATE(wordoftheday,'%Y%m%d') , INTERVAL 2 MONTH), '%Y%m%d') WHERE wordoftheday<>''

Mysql cache optimizasyon

mysql> show variables like ‘query%’;
+——————————+———-+
| Variable_name | Value |
+——————————+———-+
| query_alloc_block_size | 8192 |
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 16777216 |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF |
| query_prealloc_size | 8192 |
+——————————+———-+
7 rows in set (1.06 sec)

mysql> set global query_cache_size=50000000;
Query OK, 0 rows affected (1.56 sec)

mysql> show variables like ‘query%’;
+——————————+———-+
| Variable_name | Value |
+——————————+———-+
| query_alloc_block_size | 8192 |
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 49999872 |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF |
| query_prealloc_size | 8192 |
+——————————+———-+
7 rows in set (0.00 sec)

MySQL Yedekleme / Veri taşıma

Herhangi bir veritabanının veya tablonun çıktısını sql olarak almak için:

mysqldump -u root myDB my_table > my_table.sql

Aldığımız sql dosyasınını geri almak veya başka bir sql server da oluşturmak için:

mysql -u dbuser -p –default-character-set=utf8 myDB < my_table.sql

MySQL’de kelime aratma ve düzeltme

Örnek olarak veri tabanımızdaki field1 kolonunda içinde isitma kelimesi geçen veriler olduğunu düşünelim ve bunu doğru bir Türkçe ile düzeltelim.

İlk olarak içinde isitma kelimesi geçen verileri görmek için:

SELECT field1
FROM `tablo-adi`
WHERE field1 REGEXP '[[:<:]]isitma[[:>:]]'

Ve içinde isitma kelimesi geçen tüm verileri ısıtma kelimesi ile düzeltmek için:

UPDATE `tablo-adi`
SET `field1` =
REPLACE('field1', 'isitma', 'ısıtma')
WHERE field1 REGEXP '[[:<:]]isitma[[:>:]]';

MySQL’de bir dosyadan tabloya veri transferi nasıl yapılır?

Transfer edeceğimiz dosyamızda kolonların tab karakteri ile ayrıldığını ve her satırda 1 kayıdın yeraldığını varsayarsak:

SET NAMES 'utf8';
LOAD DATA LOCAL INFILE '/home/gunebakan/transfer/verileri-aktar.txt'
  INTO TABLE tablom
  CHARACTER SET UTF8
  FIELDS TERMINATED BY '\t'
  (ilk-kolon, ikinci-kolon)
  SET username='abdulmuttalip';

Bu komutlar ile tablomuza utf8 kodlanmış tüm karakterlerin de sorunsuzca girmesini sağlarız.