複数行のデータをインポートするときに、INSERT文を大量に作って流す。
原始的なやり方ですが、データをささっとインポートしたいときによくやります。
わざわざSQLにすることで、いろいろと融通が利くんですよ。
しかし1行ずつ作っていては手間がかかりすぎますので
自動でINSERT文を大量に作ってくれるツールを作ってみました。WEBから実行できます。
在宅プログラマーの備忘録として2005年に始めたブログです。
複数行のデータをインポートするときに、INSERT文を大量に作って流す。
原始的なやり方ですが、データをささっとインポートしたいときによくやります。
わざわざSQLにすることで、いろいろと融通が利くんですよ。
しかし1行ずつ作っていては手間がかかりすぎますので
自動でINSERT文を大量に作ってくれるツールを作ってみました。WEBから実行できます。
シンプルな日本語メール送信クラスです。サーバーの文字コードはUTF-8とした場合。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
class mailsender { private $mail_to = null; private $from = null; private $from_name = null; private $subject = '(件名なし)'; private $body = '(本文なし)'; function set_mail_to($val) { $this->mail_to = $val; } function set_from($f, $fn = null) { $this->from = $f; $this->from_name = $fn; } function set_subject($val) { $this->subject = $val; } function set_body($val) { $this->body = $val; } public function send() { global $CONST; if($this->mail_to == null) { return false; } if($this->from == null) { return false; } mb_language("japanese"); mb_internal_encoding("UTF-8"); $to = $this->mail_to; $subject = $this->subject; $body = $this->body; if($this->from_name != null) { $from_name = '=?UTF-8?B?' . base64_encode($this->from_name) . '?='; $header = "From: " . $from_name . "<" . $this->from . ">\n"; } else { $header = "From: " . $this->from . "\n"; } $ret = mb_send_mail($to,$subject,$body,$header); return $ret; } } |
ファイルをダウンロードさせる場合には
headerを記述してからファイル内容を出力します。
1 2 3 4 5 6 |
header('Last-Modified: '. gmdate('D, d M Y H:i:s') .' GMT'); header('Content-Description: File Transfer'); header('Content-Type: ' . $filetype); header('Content-Transfer-Encoding: binary'); header('Content-Disposition: attachment; filename=' . $filename); exit($filecontents); |
$filetypeは ‘text/csv’ とか ‘image/jpeg’ とか ‘image/pdf’ とか。
MySQLには自動で採番するAUTO_INCREMENTという設定があります。
基本的にはこれを使えば自動的にユニークな番号を採番してくれるのですが、
データを頻繁に削除したり、テーブルをコピーしたりしていると
AUTO_INCREMENTの値が重複したり、過去に削除したデータと同じ値になってしまったりと
いろいろと怖いリスクがあります。
そのリスクを避けるため、私はINSERT文を実行する関数の中で自前で採番するようにしています。
1 2 |
/* TABLE1.ROW_NO が採番用カラムとする */ select ifnull(max(ROW_NO), 0) + 1 as max_row_no from TABLE1. |
クエリ文字列をJavaScriptで取得して連想配列に格納します。
本来はサーバーサイドに渡すパラメータですので邪道な感じもしますが。
1 2 3 4 5 6 7 8 9 |
var query = new Object(); var _q = location.search.replace('?', ''); var _qs = _q.split('&'); for(var i = 0; i < _qs.length; i++) { var _t = _qs[i].split('='); if(_t.length == 2) { query[_t[0]] = _t[1]; } } |
URLをいじれば誰でも好きな文字が渡せてしまうので注意しましょう。