mysql的tinyint(1)转成pgsql-boolean的处理

2022-08-04 10:22:33 阅读:1 编辑

配置pgsql(zhy0803要改数据库名)

'test_pgsql' => [
            'driver' => 'pgsql',
            'host' => "127.0.0.1",
            'port' => 54321,
            'database' => "zhy0803",
            'username' => "system",
            'password' => "123456",
            'charset' => 'utf8',
            'prefix' => "ims_",
            'schema' => 'public',
            'sslmode' => 'prefer',
        ],

加个函数(zhy0803要改数据库名)

Artisan::command('hello', function () {
    //Artisan::call('config:cache');

    $full_sql = "";
    $db = \DB::connection("test_pgsql");
    $sql = <<<EOT
select "table_name" ,"column_name","column_default" from "information_schema"."columns" where "table_catalog" ='zhy0803' and "table_schema" ='public' and data_type='boolean';
EOT;
;
    $res = $db->select($sql);
    foreach ($res as $item){
        $table_name = $item->table_name;
        $column_name = $item->column_name;
        $column_default= $item->column_default;
        $sing_sql = sprintf("alter table %s alter column \"%s\" type integer;
alter table %s alter column \"%s\" set default %s;
",$table_name,$column_name,$table_name,$column_name,$column_default == "true" ? 1 : 0);
        $full_sql .=$sing_sql;
    }

    print_r($res);
    print_r($full_sql);
    file_put_contents("c:/pgsql_boolean.sql",$full_sql);
});
把 c:/pgsql_boolean.sql在金仓数据库管理器里处理