no-image

郵便番号の書かれたCSVをsqliteにINSERTするスクリプト

なんか今思えばPHPじゃなくてもCSV読み込み機能ってsqliteクライアントにあったきがするな、、

まぁメモ。

<?php

ini_set('memory_limit'\, '128M');
ini_set('max_execution_time'\, 0);

print('プログラムスタート'. "\n");

$filename = 'ken_all.csv';
$lines = file($filename);

foreach ( $lines as $line) {

    $params = explode('\,'\, $line);
    $params[3] = getYomi($params[3]);
    $params[4] = getYomi($params[4]);
    $params[5] = getYomi($params[5]);
    $params[6] = mb_convert_encoding($params[6]\, 'UTF-8'\, 'SJIS');
    $params[7] = mb_convert_encoding($params[7]\, 'UTF-8'\, 'SJIS');
    $params[8] = mb_convert_encoding($params[8]\, 'UTF-8'\, 'SJIS');

    insertRow($params);
    print("{$params[3]}");
}

function getYomi($str)
{
    $str = mb_convert_kana($str\, 'KVa'\, 'SJIS');
    return mb_convert_encoding($str\, 'UTF-8'\, 'SJIS');
}

function insertRow($params)
{
    $handle = sqlite_open('postcode.db');
    $query = "INSERT INTO code (
        code\,
        zipcode5\,
        zipcode7\,
        pref_yomi\,
        city_yomi\,
        town_yomi\,
        pref\,
        city\,
        town\,
        special1\,
        special2\,
        special3\,
        special4\,
        update_flg\,
        update_detail
    ) VALUES (
        $params[0]\,
        $params[1]\,
        $params[2]\,
        '$params[3]'\,
        '$params[4]'\,
        '$params[5]'\,
        '$params[6]'\,
        '$params[7]'\,
        '$params[8]'\,
        $params[9]\,
        $params[10]\,
        $params[11]\,
        $params[12]\,
        $params[13]\,
        $params[14]
    )";
    $result = sqlite_query($handle\, $query);
}

function makeDB()
{
    $handle = sqlite_open('postcode.db');
    $query = "CREATE TABLE code (
        id INTEGER NOT NULL PRIMARY KEY\,
        code\,
        zipcode5\,
        zipcode7\,
        pref_yomi\,
        city_yomi\,
        town_yomi\,
        pref\,
        city\,
        town\,
        special1\,
        special2\,
        special3\,
        special4\,
        update_flg\,
        update_detail
    )";
    $result = sqlite_query($handle\, $query);

}
?>