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

标签 mysql import

我有两个表: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/

相关文章:

c++ - 导入C++模块,如果失败: import Python version?

import - Algolia:如果我将具有不同属性的记录导入到索引中会发生什么?

mysql - 使用元素将 xml 加载到 mysql 表中

MySQL LIKE,额外通配符对性能的影响

sql - 如何使用 pgadmin 4 导入模式 sql 文件?

python - 如何在 Python 中列出导入的类?

mysql - 从 information_schema 获取所有表,MySQL

MySQL使用IN()时的顺序

php - 如何在 php do while 和 mysql fetch assoc 中跳过这个额外的和不必要的行?