- Custom DataBase Tables
- CDBT Version 1.x
- メソッド・リファレンス
- import_table
import_table
import_table( string $table_name, array $import_data )
指定のテーブルに(複数の)データをインポートします。
パラメータ
$table_name
インポートするテーブル名を文字列で指定します。
$import_data
インポートするデータを配列で指定します。インポート用のデータ配列は行毎にカラム名=>値の配列を含む連想配列になります。
返り値
array( bool, string )
インポート処理の結果を含む配列を返します。第1要素に処理結果を示す Boolean 値が入ります。インポートが正常に終了した場合は TRUE 、それ以外は FALSE が入ります。第2要素には、処理内容もしくはエラー内容のメッセージが入ります。
変更履歴
| バージョン | 内容 |
|---|---|
| 1.0.0 | – |
| 1.1.11 | createdやupdatedに任意の日時を指定したデータをそのままインポートできるようにした |
使用例
インポートデータ配列を直接インポートする
<?php
global $cdbt;
$import_table = "prefix_tablename";
$import_data = [
[ "ID" => "", "account_name" => "John", "gender" => "male", "created" => "", "updated" => "" ],
[ "ID" => "", "account_name" => "David", "gender" => "male", "created" => "", "updated" => "" ],
[ "ID" => "", "account_name" => "Maria", "gender" => "female", "created" => "", "updated" => "" ]
];
list($result, $message) = $cdbt->import_table($import_table, $import_data);
echo $message;
アップロードされたCSVファイルからインポートする(≒CDBT管理コンソールのインポート処理)
<?php
global $cdbt;
$import_table = "prefix_tablename";
$allow_mimes = array('application/vnd.ms-excel', 'application/octet-stream', 'text/plain', 'text/csv', 'text/tsv');
if (in_array($_FILES['csv_file']['type'], $allow_mimes) && $_FILES['csv_file']['size'] > 0) {
$import_data = array();
if (($handle = fopen($_FILES['csv_file']['tmp_name'], "r")) !== false) {
$ci = 0;
$headers = array();
while (($buff = fgetcsv($handle, 0, ",", '"')) !== false) { // '
$line = array();
$exception_cnt = 0;
foreach ($buff as $idx => $val) {
if ($ci == 0) {
$headers[] = $val;
} elseif (count($buff) == count($headers)) {
$line[$headers[$idx]] = $val;
} else {
if (preg_match('/"/', $val)) {
$exception_cnt++;
list($pre_val, $sur_val) = preg_split('/"/', $val);
$line[$headers[$idx]] = $pre_val . '"';
if (preg_match('/(d{4}-d{2}-d{2}sd{2}:d{2}:d{2})/', $sur_val, $matches)) {
$line[$headers[$idx+1]] = $matches[1];
} else {
$line[$headers[$idx+1]] = $sur_val;
}
} else {
$line[$headers[$idx+$exception_cnt]] = $val;
}
}
}
if ($ci > 0)
$import_data[] = $line;
$ci++;
}
fclose($handle);
}
list($result, $message) = $cdbt->import_table($import_table, $import_data);
$msg = ($result ? "success" : "warning") .": ". $message;
} else {
$msg = "warning: Invalid file was uploaded.";
}
unlink($_FILES['csv_file']['tmp_name']);
echo $msg;