【问题标题】:Insert 13000 rows in existing table在现有表中插入 13000 行
【发布时间】:2014-07-09 02:40:29
【问题描述】:

我正在尝试在我的表中插入 13k 行。 我的表结构如下

ID | Col1 | Col2 | Col3 | Col4 | Col5 | Col6 |

ID 是主要(自动递增)列。

我需要 Col1 来反映数字 1 到 13000。

其余列将保持空白。

我确信以前有人问过这个问题,但我真的很困惑如何有效地做到这一点。 谢谢

【问题讨论】:

  • 没有“高效”的方法:插入 13,000 次。要么是 mysql 扩展语法,要么是 13,000 个单独的插入。

标签: mysql loops insert


【解决方案1】:

http://naspinski.net/post/Running-a-For-Loop-in-MS-SQL.aspx

按照此处发布的示例进行操作。您的 While (@count < 40) 将是 13000,Set @count = 0 将是 1,而不是 insert into some_table ([columnA], [column]) Values ('val1', 'val2'),它将只有 [columnA]@count 而不是 val1。下面的修改示例就足够了。

SQL 命令:

DECLARE @count INT   
SET @count = 1   
WHILE (@count < 13001)   

BEGIN   
  INSERT INTO some_table ([Col1]) VALUES (@count)   
  SET @count = (@count + 1)   
END  

MYSQL 命令:

BEGIN  
  DECLARE @count INT;  
  SET @count = 1;  

  WHILE (@count < 13001)
    INSERT INTO 'some_table' ('col1') VALUES (@count);  
    SET @count = (@count + 1);  
  END WHILE;  
END;  

【讨论】:

  • 我认为这是我最好的选择。但是,如何将其包含在 php 脚本中?还是这是直接的 SQL 命令?
  • 这是对数据库执行的 SQL 命令/查询。
  • 在 SQL 命令中运行查询时出现以下错误:
  • #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“DECLARE @count INT SET count = 1 WHILE (count
  • 您是否尝试从 PHP 执行此操作?如果是这样,您运行它的代码到底是什么?您似乎遇到了引用/解析问题。
【解决方案2】:

将数据加载到 MySQL 中最有效的方法是从本地分隔文件加载数据。 MySQL 有一个 load local infile 命令来执行此操作:

LOAD DATA INFILE '/tmp/data.csv' INTO TABLE mytable
FIELDS TERMINATED BY '|'
LINES TERMINATED BY '\n' (Col1);

您的输入文件只是 Col1 值的列表,每行一个:

8377
3888
3244
...

【讨论】:

    【解决方案3】:

    您需要指定您的信息来源。

    每个平台都有自己的方法。

    例如,Microsoft 有他们的集成服务。但如果它是简单数据,那么您可以创建一个正则表达式替换以将数据封装到插入到表中的许多选择查询中。

    但我需要更多地了解哪个数据库和信息来源才能对您有所帮助。

    【讨论】:

    • 我正在使用 mysql 作为数据库。
    • 也许我做了很多假设,但我的猜测是数据(13k)还没有在其他表的数据库中?那么你的数据来源是什么。一个excel文件?
    • 不行,需要同时创建数据。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    相关资源
    最近更新 更多