求比较标准的省市区的sql数据,详细到街道的

时间:2023-01-31 11:35:34
求比较标准的省市区的sql数据,详细到街道的。谢谢。

6 个解决方案

#1


去这里下载  上次我下载过 还不错  比较偏的或者新地可能没有 但还算比较全的

http://download.csdn.net/detail/nn360697589/9092919

#2


引用 1 楼 zhangsheng_1992 的回复:
去这里下载  上次我下载过 还不错  比较偏的或者新地可能没有 但还算比较全的

http://download.csdn.net/detail/nn360697589/9092919


json的如何转化成inser的sql语句呢?

#3


用脚本转  稍等哈 我给你写个脚本


<?php
header("content-type:text/html;charset=utf-8");
//要转的sql文件
$file = ['110.json','120.json'];
//转换以后保存的表名  跟上面一一对应即可  最后生成的文件如table110.sql
$tablename = ['table110','table120'];
foreach($file as $key => $val){
    $column = '';
    $createsql = '';
    $sql = '';
    $arr = json_decode(file_get_contents($val),true);
    $createsql ='create table '.$tablename[$key].'(';
    //生成插入的字段
    if(empty($column)){
        foreach($arr[0] as $k=>$v){
            $column .= $k.',';
            $createsql .= '`'.$k.'`'.' varchar(255),';
        }
        $column = trim($column,',');
        //生成表  所有字段均varchar了  需要的话自己调整
        $createsql = rtrim($createsql,',').')ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8;';
    }
    $sql .= 'insert into '.$tablename[$key].'('.$column.')values';
    //遍历数据
    foreach($arr as $col => $val){
        $sql .= '(';
        foreach($val as $value){
             $sql .= "'$value'".',';
        }
        $sql =rtrim($sql,',');
        $sql .= '),';
    }
    $sql =rtrim($sql,',');
    file_put_contents($tablename[$key].'.sql', $createsql.$sql);
}


本来网上搜个python的脚本改改呢  不过想到这个比较简单  就给你写这个了  自己修改一点参数  
然后现在版本的liunx上都自带有php   php index.php生产一下就好  不过遗憾的是json文件没发得知字段类型 索引等信息  还得自己调整下

#4


生产的脚本文件如下  勉强凑合能用 求比较标准的省市区的sql数据,详细到街道的

#5


引用 4 楼 zhangsheng_1992 的回复:
生产的脚本文件如下  勉强凑合能用 求比较标准的省市区的sql数据,详细到街道的


还是没有搞懂你是怎么弄的?

#6


引用 5 楼 mchdba 的回复:
Quote: 引用 4 楼 zhangsheng_1992 的回复:

生产的脚本文件如下  勉强凑合能用 求比较标准的省市区的sql数据,详细到街道的


还是没有搞懂你是怎么弄的?


他用的是php来转的,然后一共有2个文件,于是开始遍历这2个文件,每次遍历时,先调用了  json_decode 这个函数,来解码成一个数组,先遍历这个数组取得字段名称,拼接成create table xxx (。。。),然后再遍历这个数组拿到实际的数据,变成insert into。

感觉和动态拼接sql差不多,关键还是那个 json_decode函数。

我记得mysql7.0好像引入了解析json的函数来着

#1


去这里下载  上次我下载过 还不错  比较偏的或者新地可能没有 但还算比较全的

http://download.csdn.net/detail/nn360697589/9092919

#2


引用 1 楼 zhangsheng_1992 的回复:
去这里下载  上次我下载过 还不错  比较偏的或者新地可能没有 但还算比较全的

http://download.csdn.net/detail/nn360697589/9092919


json的如何转化成inser的sql语句呢?

#3


用脚本转  稍等哈 我给你写个脚本


<?php
header("content-type:text/html;charset=utf-8");
//要转的sql文件
$file = ['110.json','120.json'];
//转换以后保存的表名  跟上面一一对应即可  最后生成的文件如table110.sql
$tablename = ['table110','table120'];
foreach($file as $key => $val){
    $column = '';
    $createsql = '';
    $sql = '';
    $arr = json_decode(file_get_contents($val),true);
    $createsql ='create table '.$tablename[$key].'(';
    //生成插入的字段
    if(empty($column)){
        foreach($arr[0] as $k=>$v){
            $column .= $k.',';
            $createsql .= '`'.$k.'`'.' varchar(255),';
        }
        $column = trim($column,',');
        //生成表  所有字段均varchar了  需要的话自己调整
        $createsql = rtrim($createsql,',').')ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8;';
    }
    $sql .= 'insert into '.$tablename[$key].'('.$column.')values';
    //遍历数据
    foreach($arr as $col => $val){
        $sql .= '(';
        foreach($val as $value){
             $sql .= "'$value'".',';
        }
        $sql =rtrim($sql,',');
        $sql .= '),';
    }
    $sql =rtrim($sql,',');
    file_put_contents($tablename[$key].'.sql', $createsql.$sql);
}


本来网上搜个python的脚本改改呢  不过想到这个比较简单  就给你写这个了  自己修改一点参数  
然后现在版本的liunx上都自带有php   php index.php生产一下就好  不过遗憾的是json文件没发得知字段类型 索引等信息  还得自己调整下

#4


生产的脚本文件如下  勉强凑合能用 求比较标准的省市区的sql数据,详细到街道的

#5


引用 4 楼 zhangsheng_1992 的回复:
生产的脚本文件如下  勉强凑合能用 求比较标准的省市区的sql数据,详细到街道的


还是没有搞懂你是怎么弄的?

#6


引用 5 楼 mchdba 的回复:
Quote: 引用 4 楼 zhangsheng_1992 的回复:

生产的脚本文件如下  勉强凑合能用 求比较标准的省市区的sql数据,详细到街道的


还是没有搞懂你是怎么弄的?


他用的是php来转的,然后一共有2个文件,于是开始遍历这2个文件,每次遍历时,先调用了  json_decode 这个函数,来解码成一个数组,先遍历这个数组取得字段名称,拼接成create table xxx (。。。),然后再遍历这个数组拿到实际的数据,变成insert into。

感觉和动态拼接sql差不多,关键还是那个 json_decode函数。

我记得mysql7.0好像引入了解析json的函数来着