【问题标题】:Need to insert price table into mysql需要将价格表插入mysql
【发布时间】:2018-05-08 18:11:13
【问题描述】:

我有一张表,我需要在 mysql 数据库中添加一行新记录。现在我为每条记录手动执行此操作,但每个表中有 600 条记录。

我在必须插入名为“curtain_entry_item”数据库的行中有这些列:

group > 这是连接价格表的记录,例如这是价格表 31。

宽度 > 这可能是 20 厘米 30 厘米等,直到 240

长度 > 这可能是 20 厘米 30 厘米等,直到 300

价格>这可能是 30

那么我怎样才能在一个操作中执行这个表到 mysql 数据库。

您可以在this link查看表格示例

非常感谢!沃特

【问题讨论】:

  • '我有一张桌子' ...所以显示这张桌子。再说一次,你有多少张桌子?也许我不明白,但是将 Excell 哲学移植到关系数据库似乎是错误的
  • 由于您在 excel 中有数据,如果这是一次性的,并且您只有几列,您可以考虑通过构建和复制 excel 为每一行构建 SQL INSERT 语句函数,然后将生成的 sql 从那里复制到 mysql 工作台并运行它。这是我经常使用的一个示例函数: =CONCATENATE("insert into mytable (mycol1,mycol2) values(",C2,",'",D2,"');")

标签: mysql sql-insert bulkinsert


【解决方案1】:

由于没有您的数据库结构的确切细节,因此无法为您提供有效的解决方案。

我的猜测是您需要 INSERT INTO SELECT 语句,该语句从一个表中复制数据并将其插入到另一个表中。您可以从 w3scools 找到更多详细信息:

https://www.w3schools.com/sql/sql_insert_into_select.asp

【讨论】:

    【解决方案2】:

    听起来您正在寻找一种将电子表格矩阵转换为一组加载数据库表的 SQL 命令的方法。

    如果是这样,这更像是一个输入解析问题而不是数据库问题。

    一般的做法是:

    for each row
        for each column
            issue an INSERT statement using the row, column and intersection cell
    

    这是一个 Perl 程序,例如,您提供的电子表格的第一个选项卡(将其导出为 CSV 后):

    #!/usr/bin/perl
    
    # read in the header line and trim off whitespce
    $header = <STDIN>;
    $header =~ s/^\s+|\s+$//g;
    
    # make the header line into an array of 'width' values
    @widths = split(/,/, $header);
    
    # loop through the remaining (data) rows
    while ($data = <STDIN>) {
        # trim whitespace
        $data =~ s/^\s+|\s+$//g;
    
        # split the row into data elements, and use the 1st one as the 'length'
        @prices = split(/,/, $data);
        $length = $prices[0];
    
        # loop through the remaining data cells
        for ($i = 1; $i < 23; $i++) {
            # print out an appropriate INSERT statement
            printf(STDOUT "INSERT INTO curtain_price_table (group, width, length, price) VALUES (31, %d, %d, %d);\n", $widths[$i], $length, $prices[$i] . "\n");
        }
    }
    

    Perl 不是您唯一的选择;任何脚本语言都可以很容易地完成同样的任务。而且,您可能需要对其进行调整,使其成为各种输入文件和数据库表的通用解决方案。但这应该为您提供足够的信息来解决您的需求。

    【讨论】:

    • 我很想给你的答案投票,但我很伤心,因为即使你的答案很有用,它更大的作用是奖励那些提出的问题太模糊、不够清晰的人,最终让社区有责任尝试弄清楚 OP 到底在问什么——我认为应该不鼓励这样做。所以我不赞成 - 但我反对这个问题。
    • @GeniaS。我真的很感激你说的话,但我会要求你重新考虑;我的声誉仍然很低,大多数问题都很快得到了回答;我愿意付出额外的努力来破译大多数人忽略的不太清楚的问题,以建立声誉;另外,我曾经是个菜鸟(早在 SO 之前),我发现同事们对我措辞不完整的问题有耐心是很有帮助的;所以,请重新考虑——你的投票会帮助我帮助别人;谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-11-15
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 2013-06-22
    相关资源
    最近更新 更多