gpt4 book ai didi

Mysql单列表-->插入其他表

转载 作者:行者123 更新时间:2023-11-29 13:48:01 25 4
gpt4 key购买 nike

我有两个表:t1t2
- t2 只有 1 个名为 stuff 的列(60.000 个条目)。
- t1 有 15 列,包括 stuff(空)。 t1 大约有 650.000 个条目。

当我没有任何匹配的数据时,如何将 t2.stuff 中的数据导入到 t1.stuff 中? (我只想用 t2.stuff 中的数据填充 t1.stuff 的空字段,而不关心匹配 id 或其他任何内容。)

最好的情况(我认为)是,如果我运行此查询大约 11 次,t1.stuff 的所有字段都会被填充,因为 t1 中没有空字段。剩下的东西

以下是表格的示例:

t1:
|__a___|_b_|_c_|东西|...|
|___308|foo|bar|_____|baz|
|___312|foo|bar|_____|baz|
...
|655578|foo|bar|_____|baz|

t2:
|___东西___|
|some_info_1|
|some_info_2|
...
|some_info_n|

也许需要多个步骤...

更新

这是我使用的解决方案,以防有人遇到类似问题 - 所有功劳都归于用户nurdglaw,因为他在正确的方向。那么我们开始吧:

  1. 向相关表中添加一个新列,其中填充了自动增量数字(我设置了 alter table t1 auto_increment = 1 并在主键上临时禁用了自动增量,以避免出现错误代码) ALTER TABLE t1 ADD COLUMN new_column INTEGER UNIQUE AUTO_INCRMENT;

  2. 对 t2 做了同样的事情。如果您还没有第二个表,您可以执行以下操作:CREATE TABLE t2 (id INTEGER PRIMARY KEY AUTO_INCRMENT,t2_data_column VARCHAR(255)); <-- 根据需要调整数字

    并使用以下方式导入您的数据:
    加载数据本地内文件'path_on_your_server/data_file.csv'
    进入表t2
    LINES TERMINATED BY '\r\n' <-- 根据您的换行需求进行调整
    (t2_data_column)

  3. 现在您有了要匹配的内容,您可以通过执行以下操作来INNER JOIN t1t2:数据从 t2t1
    更新 t1 AS
    加入 t2 AS t ON t.id=s.new_column
    SET s.stuff=t.t2_data_column; <-- stuff 是我想要将数据导入到的 t1 中的列。

  4. 收拾残局
    删除表t2;
    ALTER TABLE t1 DROP COLUMN new_column;
    再次启用主键自动增量,并将其设置为新行所需的数字(如果您之前使用过自动增量)。

就是这样,你就完成了!

进一步说明:我决定离线调整数据并一次性导入此方法所需的 650.000 个条目,而不是仅使用我在第一个问题中输入的 60.000 个条目。但是您会想到使用任意数量的数据来执行此操作,并将其与您需要的任何内容进行匹配。

最佳答案

INSERT 语句在表中创建新行。您需要对已存在的行进行更新

一个简单的方法是使用外部脚本语言

;这是一个 rebol 示例

;假设您使用来自 softinnov 的 mysql 库

; a_ 是 t1 中行的唯一键的名称

db: open mysql://user:pass@mysql

insert db {select * from t1}

t1rows: copy db

insert db {select * from t2}

t2rows: copy db

foreach row t1rows [

insert db [ {update t1 set t1.stuff = ? where t1.a_ = ?} t2rows/1/1 row/1]

either tail? next t2rows [

  t2rows: head t2rows

] [

  t2rows: next t2rows

]

]

抱歉,我对示例中的格式和变量仍然有困难

关于Mysql单列表-->插入其他表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17122903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com