【问题标题】:Inserting several thousand entries into MySQL with one query使用一个查询将数千个条目插入 MySQL
【发布时间】:2014-05-28 16:45:05
【问题描述】:

我正在尝试将大约 6,000 个邮政编码存储到我的数据库中,但我当然不想单独插入它们。

我有一个包含任务所需邮政编码的文本文件

文本文件是这样的,

SS99 6LB,SS8 9RA,SS7 9SR,SS7 9SS,SS7 9ST

我想一键将它们全部插入数据库。

表结构就是简单的ID(INT), Postcode(VAR)。

【问题讨论】:

  • 考虑使用 LOAD DATA INFILE
  • 你试过在 phpmyadmin 中导入它们吗?
  • 当然,但在技术方面我并不是那么出色。这些天我更像是一名设计师,但我需要开发一些简单的东西。我将如何以及在何处成功地从 txt 文件导入 phpMyAdmin 中的值?

标签: mysql arrays bulkinsert


【解决方案1】:

您可以使用LOAD DATA INFILE

LOAD DATA LOCAL INFILE 'filename.csv' 
INTO TABLE tablename
LINES TERMINATED BY ','
(Postcode) 
;

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

【讨论】:

    【解决方案2】:

    首先将文本文件中的文本分配给字符串

    $string ='that text';
    $arr = explode(",",$string);
    

    这是一个想法/概念,您现在可以制作一个循环

    $sql="";
    foreach($arr as $ar)
    {
     //$sql.=($sql=="")?"":",";
     //$sql.=$ar;
      mysql_query("insert into table(Postcodes) values ($ar)");
    }
    

    根据您的服务器检查邮政编码周围的引号语法

    为了提高性能,您可以编写它将在一个查询中插入所有内容

    $sql="insert into table(Postcodes) values";
    foreach($arr as $ar)
    {
     $sql.=($sql=="insert into table(Postcodes) values")?"":",";
    
      $sql.="(".$ar.")";
    }
    mysql_query($sql);
    

    【讨论】:

    • 这将运行 6000 个查询...您可以做得比这更好。
    • 基本上他是要插入的,他没说要性能,mysql能跑这么多
    • 是的,但是当您可以使用LOAD DATA INFILE,甚至将所有值连接成一个字符串并在单个查询中将其发送到数据库时,这样做是愚蠢的。更糟糕的是,您的示例使用了已弃用的 mysql 扩展。
    • 如果问题是关于“最好的方法”或“具有更好的性能”,这可能是正确的,我只是向他展示了一种使用 php 作为其“php”问题的方法:)
    猜你喜欢
    • 2019-10-04
    • 2023-04-08
    • 1970-01-01
    • 2018-10-14
    • 2010-11-30
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多