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 createdupdatedに任意の日時を指定したデータをそのままインポートできるようにした

使用例

インポートデータ配列を直接インポートする

<?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;