[MySQL]XAMPP+コマンドプロンプト
XAMPP+コマンドプロンプト
MySQLのダンプファイルをリストアする時、文字コードを揃えないと文字化けする。
ダンプファイルがUTF-8の時
chcp 65001 mysql -u user -p < C:\xampp\htdocs\abc.dump
その後確認する時
chcp 932 mysql -u user -p ※MySQLログイン set names sijis select * from tablename;
XAMPP+コマンドプロンプト
MySQLのダンプファイルをリストアする時、文字コードを揃えないと文字化けする。
ダンプファイルがUTF-8の時
chcp 65001 mysql -u user -p < C:\xampp\htdocs\abc.dump
その後確認する時
chcp 932 mysql -u user -p ※MySQLログイン set names sijis select * from tablename;
mysqldump
mysqldump --default-character-set=utf8 -u ユーザ名 -p DB名 > /var/www/html/dump.sql
MySQLからデータ取得
#!/usr/bin/ruby-1.9.3 # coding: utf-8 require 'json' require 'mysql' puts "Content-type: application/json\n\n" connection = Mysql.connect('host','user','password','db name') connection.query("set character set utf8") #文字化けするとき columns=["ID","post_title","post_date"] result = connection.query("SELECT "+columns.join(",")+" FROM wp_posts WHERE post_status='publish' ORDER BY ID DESC LIMIT 5") connection.close results=Array.new result.each {|record| w = {} record.each_with_index{|val,i| key = columns[i] w[key.force_encoding("utf-8")]=val.force_encoding("utf-8") #文字化けするときforce_encoding } results.push(w) } puts JSON.generate({'time'=>Time.now.strftime("%Y-%m-%d %H:%M:%S"), 'data'=>results})
MySQLの文字コードの設定を確認する
クエリ
SHOW VARIABLES LIKE 'character_set%'
結果
Variable_name | Value |
---|---|
character_set_client | utf8 |
character_set_connection | utf8 |
character_set_database | utf8 |
character_set_filesystem | binary |
character_set_results | utf8 |
character_set_server | utf8 |
character_set_system | utf8 |
character_sets_dir | /usr/share/mysql/charsets/ |
ビット演算#1
type(INTEGER)を4ビット右シフトして右端が1であるレコードのidとtypeを取得する。
SELECT id,type FROM target_table_name WHERE type >> 4 & 1 = 1;
INSERT文を作る
echo getInsertQueryByKey('system_table', array('name','gender'), array( array('jeff','male'), array('pola','female') ) ); function getInsertQueryByKey($tableName,$columns,$datas){ //SQLite古いバージョン $w=array(); $column = implode(',', $columns); $query="INSERT INTO {$tableName} ({$column}) SELECT "; $tmp=array(); foreach ($columns as $index => $columnName) { $tmp[] = "'". $datas[0][$index] . "'" . ' AS ' . $columnName; } $query .= implode(', ', $tmp); $w[]=$query; foreach ($datas as $index => $data) { if($index<1)continue; $tmp=array(); foreach ($columns as $index2 => $columnName) { $tmp[]=$data[$index2]; } $w[]="'".implode("', '", $tmp)."'"; } return implode(' UNION ALL SELECT ', $w).';'; /* MySQL or SQLite(バージョン 3.7.11以降) $queryValues=array(); foreach ($datas as $index => $value) { $values=array(); foreach ($value as $index2 => $value2) { $values[]="'".$value2."'"; } $queryValues[]='('.implode(',', $values).')'; } $column=implode(',', $columns); $value=implode(',', $queryValues); $sql="INSERT INTO {$tableName} ({$column}) VALUES {$value};"; return $sql; */ }
INSERTで複数のデータを挿入
INSERT INTO system_table (name,gender) SELECT 'jeff' AS name, 'male' AS gender UNION ALL SELECT 'pola', 'female';
MySQL or SQLite(バージョン 3.7.11以降)
INSERT INTO system_table (name,gender) VALUES ('jeff','male'),('pola','female');
テーブルBの結果をテーブルAに挿入
INSERT INTO DBNameA.tableNameA (カラム名1,カラム名2,カラム名3) SELECT カラム名4,カラム名5,カラム名6 FROM DBNameB.tableNameB;
MySQLを使う
$default = array( 'host' => 'database host', 'user' => 'user ID', 'password' => 'password', 'database' => 'database name', 'encoding' => 'utf8', ); $link = mysql_connect($default['host'], $default['user'], $default['password']); if (!$link) { echo '接続失敗です。'.mysql_error(); die(); } echo "接続成功<br/><br/>"; $db_selected = mysql_select_db($default['database'], $link); if (!$db_selected){ echo 'データベース選択失敗です。'.mysql_error(); die(); } echo "データベース選択成功<br/><br/>"; mysql_set_charset($default['encoding']); $result = mysql_query('SELECT * FROM test00'); if (!$result) { echo 'クエリーが失敗しました。'.mysql_error(); die(); } $tmp=array(); while ($row = mysql_fetch_assoc($result)) { $tmp[]=$row; } var_dump($tmp); $close_flag = mysql_close($link); echo '切断に'.( ($close_flag)?'成功':'失敗' ).'しました。';
同定義のテーブルA、テーブルBにおいて
テーブルAにあり、テーブルBに無いデータのidを取得する。
SELECT id FROM テーブルA WHERE NOT EXISTS (SELECT id FROM テーブルB WHERE テーブルB.id = テーブルA.id) ORDER BY id