【问题标题】:get details on file then insert to database获取文件的详细信息,然后插入数据库
【发布时间】:2012-05-25 22:19:30
【问题描述】:

我有一个 .txt 文件,其中包含所有国家/地区的详细信息,格式如下:

Country,City,AccentCity,Region,Population,Latitude,Longitude
ad,aixas,Aixàs,06,,42.4833333,1.4666667
ad,aixirivali,Aixirivali,06,,42.4666667,1.5
ad,aixirivall,Aixirivall,06,,42.4666667,1.5
ad,aixirvall,Aixirvall,06,,42.4666667,1.5
ad,aixovall,Aixovall,06,,42.4666667,1.4833333
ad,andorra,Andorra,07,,42.5,1.5166667
ad,andorra la vella,Andorra la Vella,07,20430,42.5,1.5166667
ad,andorra-vieille,Andorra-Vieille,07,,42.5,1.5166667
ad,andorre,Andorre,07,,42.5,1.5166667
ad,andorre-la-vieille,Andorre-la-Vieille,07,,42.5,1.5166667
ad,andorre-vieille,Andorre-Vieille,07,,42.5,1.5166667
ad,ansalonga,Ansalonga,04,,42.5666667,1.5166667

我必须将这些数据插入 3 个表中,例如城市、州和国家,不得重复。

有什么方法可以从 .txt 文件中读取数据并将其插入数据库?

如何获取州和城市数据库?

【问题讨论】:

  • 你只需要读取文件,用逗号分割每一行,创建你的 INSERT 语句......完成(?)

标签: php database file csv readfile


【解决方案1】:

以 CSV 格式读取文件,然后插入:

if (($handle = fopen("cities.txt", "r")) !== FALSE) {
    while (($data = fgetcsv($handle)) !== FALSE) {
        // Craft your SQL insert statement such as:
        $sql = "INSERT INTO cities (country, city, accent_city, etc.) VALUES ('{$data[0]}','{$data[1]}','{$data[2]}', etc.)";
        // Use the appropriate backend functions depending on your DB, mysql, postgres, etc.
    }
}

【讨论】:

  • 是否可以插入到 3 个单独的表格中,例如国家/地区城市
  • 当然,请记住,您的数据集是针对城市的,因此如果您每次只插入第一列,就会有重复的国家/地区。编辑您的问题以包含您的表定义,我可以更新答案以向您展示如何做到这一点。
  • 我只需要菲律宾的州和城市,即 $data[0]=ph
【解决方案2】:

如果您的数据库是 mysql,则存在一个用于批量插入的实用程序,documentation

如果没有,可能您的数据库也有一个,但如果您想使用 PHP 执行此操作,@davidethell 的示例非常适合完成任务

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多