如何从其他表填充表的外键

2024-05-04

我有以下表格,其中translation是空的,我正在尝试填充:

translation {
    id
    translated
    language_id
    template_id
}

language {
    id
    langname
    langcode
}

template {
    id
    tplname
    source
    domain
    total
}

要填写的源数据translation是我从外部 CSV 文件填充的临时表:

tmp_table {
    id
    translated
    langname
    tplname
    source
    domain
}

我想做的是填充translation的值来自tmp_table. The translated字段可以直接复制,但我不太确定如何获取正确的language_id(tmp_table.langname 可用于确定 language.id)和template_id(tmp_table.tplname、tmp_table.source、tmp_table.domain 一起可用于确定 template.id)。

这可能是一个微不足道的问题,但我对 SQL 还很陌生,不确定最好的查询应该是什么来填充translation桌子。有任何想法吗?


这可以简化为:

INSERT INTO translation (id, translated, language_id, template_id)
SELECT tmp.id, tmp.translated, l.id, t.id
FROM   tmp_table tmp
JOIN   language l USING (langname)
JOIN   template t USING (tplname, source, domain)
ORDER  BY tmp.id;

我添加了一个ORDER BY您并不严格需要的子句,但如果您像这样(或其他方式)插入聚集的数据,某些查询可能会受益。

如果您想避免丢失在其中找不到匹配行的行language or template, 做了LEFT JOIN代替JOIN对于两个表(前提是language_id and template_id can be NULL.

除了我已经列出的内容之外你之前的问题 https://stackoverflow.com/a/9423888/939860:如果INSERT很大并且占目标表的很大一部分,可能会更快删除所有索引在目标表上,然后重新创建它们。从头开始创建索引是a lot比为每一行增量更新它们更快。

唯一索引也充当约束,因此您必须考虑是否稍后强制执行规则或保留它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从其他表填充表的外键 的相关文章

  • C# using 语句、SQL 和 SqlConnection

    使用 using 语句 C SQL 可以吗 private static void CreateCommand string queryString string connectionString using SqlConnection c
  • 标量子查询包含多行

    我正在使用 H2 数据库并想要移动一些数据 为此 我创建了以下查询 UPDATE CUSTOMER SET EMAIL SELECT service EMAIL FROM CUSTOMER SERVICE AS service INNER
  • 分组和切换列和行

    我不知道这是否会被正式称为枢轴 但我想要的结果是这样的 Alex Charley Liza 213 345 1 23 111 5 42 52 2 323 5 23 1 324 5 我的输入数据采用这种形式 Apt Name
  • 一个表可以有多个主键吗?

    我现在很困惑 也许你可以帮助我更好地理解这个问题 即一个表可以有两个主键 如果是 那么如何 如果没有 那为什么 您询问是否可以有多个主键field你当然可以 您只能有一个主键 但它可以包含唯一标识行所需的任意数量的列 创建表时使用类似这样的
  • 带有可变 WHERE 子句的批量 UPDATE 表

    我有一堆值对 foo1 bar1 foo2 bar2 我想做一堆更新 将 foo 列设置为 foo1 其中 bar 列为 bar1 我正在使用 psycopg2 在 Python 中执行此操作 我可以executemany与查询UPDATE
  • 有哪些可用选项可以识别和删除 Postgres 中的无效对象(例如:损坏的索引)

    有哪些可用选项可以识别和删除 Postgres 中的无效对象 如果您指的是检测 无效 创建不良 索引 显然 Postgres 在尝试创建索引时可能会 失败 然后查询规划器将不会使用它们 尽管它们存在于您的系统中 此查询将检测 失败 索引 h
  • Postgres JSONB:数组数组的 where 子句

    postgres 中有 v 9 5 如果有的话 create table json test id varchar NOT NULL data jsonb NOT NULL PRIMARY KEY id 其中 data 是 json 并且包
  • 3 个表的 SQL 查询(或联接)

    第一次在 Stack Overflow 上问问题 很棒的资源 但是只有一件事真正让我作为 SQL 新手感到困惑 我有三个表 我想获取与鲍勃的学生相关的所有导师的姓名 表 1 教师 ID Name 1 Bob 表 2 学生 STUDENT I
  • 为 PostgreSQL 查询选择正确的索引

    简化表 CREATE TABLE products product no integer PRIMARY KEY sales integer status varchar 16 category varchar 16 CREATE INDE
  • 从对象定义生成数据库表

    我知道有几种 自动 方法可以创建数据访问层来操作现有数据库 LINQ to SQL Hibernate 等 但我有点厌倦了 我相信应该有更好的做事方式 比如 在 Visio 中创建 更改表 使用 Visio 的 更新数据库 创建 更改数据库
  • Oracle SQL 函数中可以有 commit 语句吗

    在 SQL 函数中使用 COMMIT 语句是否可能 有意义 从技术上来说 答案是肯定的 你can请执行下列操作 create or replace function committest return number as begin upd
  • 如何加速spark df.write jdbc到postgres数据库?

    我是 Spark 新手 正在尝试使用 df write 加速将数据帧的内容 可以有 200k 到 2M 行 附加到 postgres 数据库 df write format jdbc options url psql url spark d
  • PostgreSQL - 致命:用户“myuser”身份验证失败[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我刚刚在我的 Ubuntu Box 中安装了 PostGreSQL 我想做的第一件事就是创建一个数据库 我读了文档 http www postgres
  • 在android中创建SQLite数据库

    我想在我的应用程序中创建一个 SQLite 数据库 其中包含三个表 我将向表中添加数据并稍后使用它们 但我喜欢保留数据库 就好像第一次安装应用程序时它会检查数据库是否存在 如果存在则更新它 否则如果不存在则创建一个新数据库 此外 我正在制作
  • 使用来自另一个数据库的选择查询更新 mysql 表

    我有两个数据库 我想用另一个数据库表中的值更新一个表 我正在使用以下查询 但它不起作用 UPDATE database1 table1 SET field2 database2 table1 field2 WHERE database1 t
  • Django 模型:默认日期时间未转换为 SQL CURRENT_TIMESTAMP

    我正在使用 Django 模型创建 PostgreSQL DB 我有一个 DateTimeField 我想将当前时间戳设置为默认值 我知道有多个消息来源建议如何做到这一点 但是 当我在 Django 之外检查数据库时 默认时间戳不会显示 我
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • 获取mysql中逗号分隔行中不同值的计数

    一个表 Jobs 有 2 列 JobId 城市 当我们保存工作时 工作位置可能是多个城市 如下所示 JobId City 1 New York 2 New York Ohio Virginia 3 New York Virginia 我如何
  • 更改mysql数据库表中的日期格式

    大家早上好 只是一个简单的问题 在我现有的 MySql 数据库中 我几乎没有包含日期 的列 目前这些是年 月 日格式 但现在我需要将其全部更改为年 月 日格式 我试过了select date format curdate d m Y 但它不
  • 在同一查询中选择 Count of ip 和 Count of DISTINCT ip

    我有一个这样的表结构 TABLE NAME counter id datetime url ip 1 2013 04 12 13 27 09 url1 ip01 2 2013 04 13 10 55 43 url2 ip02 3 2013

随机推荐

  • 我可以将 JPA 2.0 与 Google App Engine 一起使用吗?

    我可以将 JPA 2 0 例如 EclipseLink 与 Google App Engine 一起使用吗 Google AppEngine 的 DataNucleus 插件支持 JDO 和 JPA API 来访问 Google AppEn
  • 将属性类型作为参数传递

    有没有办法将属性作为参数传递给函数 class Car let doors Int 4 let price Int 1000 有没有办法将 Car 属性作为类型传递给函数 我想实现以下目标 func f1 car Car property
  • 无法将 QMap 传递到 SLOT

    所以 这有效 h public slots void addMenu QString passedName signals void clicked const QString text cpp signalMapper new QSign
  • Spring JPA自定义查询与WHERE条件中的参数组合?

    如何在 Spring Data 中编写至少使用三个参数之一的 JPA 查询 我有这三个参数 Id PK Name Surname 客户端必须至少提供这三个参数之一 我想通过这些非空参数找到用户 是否可以为我的存储库创建此类自定义查询 或者我
  • SWIG 的 Python ctypes 回调函数

    我有一个 SWIG C 函数 它需要一个函数指针 WNDPROC 并且想给它一个由 ctypes WINFUNCTYPE 包装的 Python 函数 在我看来 这应该是兼容的 但 SWIG 的类型检查会引发异常 因为它不知道 ctypes
  • detached 和 allocateCurrentContext 是什么意思?

    当我将作业添加到队列中时 DispatchWorkItemFlags 为我们提供了几个选项可供选择 public func sync
  • 为所有图像添加前缀(递归)

    我有一个包含 5000 多张图像的文件夹 全部带有 JPG 扩展名 我想要做的就是递归地向所有图像添加 thumb 前缀 我发现了一个类似的问题 重命名文件和目录 添加前缀 https stackoverflow com questions
  • 地址栏中的 https 锁和公司名称

    我注意到在查看贝宝的网站时 他们的公司名称位于 Chrome 中的锁定图标旁边 这是因为他们创作了 ssl 证书 还是您认为他们是如何实现这一目标的 这是我一直很好奇的事情 但在搜索过程中我很难找到任何答案 您需要一个称为 扩展验证 EV
  • PowerPoint 命令,例如在 Office javascript API 上插入幻灯片或应用等效主题

    我正在开发一个 PowerPoint 加载项 将来它将在 Office Store 中发布 但它是VSTO项目 C 和winforms 无法发布 根据我的搜索 它一定是 Office Web Add in 项目 清单 xml 和网页 我正在
  • 如何让 NHibernate 缓存获取的子集合?

    我有一个相当简单的条件查询来获取子集合 如下所示 var order Session CreateCriteria
  • 自动化脚本:如果 FieldA = 1,则将 FieldB 设置为“one”

    我试图将这个问题分解为可管理的部分 空间查询 https stackoverflow com questions 56587515 maximo spatial query 我认为第一步是创建一个自动化脚本这样做是这样的 从字段中获取值 用
  • AWS Lambda 上的 Google-chrome

    是否可以在带有容器的 AWS Lambda 中使用 puppeteer 运行 Google chrome 而不是 Chromium 当我在浏览器中创建新页面时脚本卡住 const page await browser newPage 来自
  • 为什么 React JS 不自动为动态子项生成键?

    在编写 ReactJS 代码时 我必须为动态子项提供键 例如 render const options this state const availableOptions options map opt gt return
  • VSTS 包源不从上游源提取包 (nuget.org)

    我已经为我们的开发团队在 VSTS 上设置了一个新的团队项目 并且正在使用Package Management用于发布 NuGet 包的扩展 我还启用了公众nuget orgfeed 作为我们内部包 feed 的上游来源 按照推荐here
  • 引导导航栏后面的空间

    使用引导程序navbar 我试图弄清楚如何使其不隐藏主体部分的顶部 实际上 使用这里推荐的方法可以很好地解决这个问题 Twitter Bootstrap 顶部导航栏阻挡页面顶部内容 https stackoverflow com quest
  • 敏感 SSIS 包参数字符串中的特殊字符导致包无效

    我的 SSIS 包上有一个敏感字符串参数 用于存储远程服务器的密码 但是 当字符串值包含大括号时 作业代理会在配置该步骤的包参数时引发错误 Microsoft SQL Server Management Studio 在命令行参数中检测到错
  • 如何使用 PHP 发送 OPTIONS 请求

    有谁知道如何使用 PHP 发送 OPTIONS 请求 我找不到执行此操作的curl setopt 我正在使用 php 5 6 7 我已经弄清楚了 GET POST DELETE 和 PUT 只需要选项 我已经尝试过以下 hd 的答案 ch
  • 计算以字符串形式给出的算术表达式

    我正在开发一个项目 需要计算以字符串形式给出的算术表达式的值 这就是我选择使用的方式 即运行字符串直到符号相乘 在此期间 我保留乘法字符串之前的数字 如果这些数字之前有符号 我会重置字符串 最后 当我计算乘号时 我检查接下来会发生什么并将其
  • 如何在Eclipse中设置默认Maven的Java?

    如果我创建新的Maven项目于Eclipse并基于快速入门原型 它出现J2SE 1 5 in Java Build Path窗口和 1 5 英寸Java Compiler JDK Compliance window 所以 我通常必须手动将其
  • 如何从其他表填充表的外键

    我有以下表格 其中translation是空的 我正在尝试填充 translation id translated language id template id language id langname langcode template