Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用外键从CSV提取和导入数据. Postgresql

用外键从CSV提取和导入数据. Postgresql
EN

Stack Overflow用户
提问于 2021-12-28 07:29:01
回答 1查看 705关注 0票数 0

我有一个多租户数据库。我的要求是从数据库中提取单个租户的数据并插入到其他数据库中。

所以我有两个表:用户和身份。users表具有外键identity_id与标识表相连接,可以有多个身份和用户下的一个客户。

我正在将数据提取到csv文件中,并从csv文件中插入新的数据库。主键被设置为自动增量,因此用户和标识表在从csv插入数据时生成id。

现有数据库中的表数据

用户表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
| id  | identity_id |
| --- | ------------|
| 86  | 70          |
| 193 | 127         |
| 223 | 131         |

恒等表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
|id |name        |email            |
|---|------------|-----------------|
|70 |Alon muscle |muscle@test.com  |
|131|james       |james@james.com  |
|127|watson      |watson@watson.com|

现在,identity_id是用户表映射到标识表的外键。

我正在尝试将用户和标识数据插入到新的数据库中,这样用户和标识的主键就会自动递增。问题出在外键上。如何维护foreign_key关系,因为我有多个用户和身份记录?

EN

回答 1

Stack Overflow用户

发布于 2021-12-29 15:24:57

实际上,您没有提供表的详细信息,这将是实际的定义(ddl)。也不提供CVS内容,我假设您的stage表包含相同的内容。但是,通过提供测试数据和一些假设,下面将演示一个加载数据的方法。该方法是构建一个使用stage表加载identities表的过程,然后从为填充users表提供的电子邮件中选择生成id。假设:

  1. 电子邮件在identities中必须是唯一的(至少在小写中是如此)。
  2. stage表反映identities的名称和电子邮件。

过程来加载标识和用户。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    create or replace procedure generate_user_idents() 
      language sql $
        insert into identities(name, email)
             select name, email
               from stage
              on conflict (low_email) 
                  do nothing ; 
                 
    as $$
        insert into users(ident_id) 
             select ident.ident_id 
               from identities ident 
              where ident.low_email in 
                    ( select lower(email) 
                        from stage
                    ) ;
                   
    $$;  

脚本来清除和重新填充阶段数据,然后将阶段加载到标识和用户。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    do $$
    begin
        execute 'truncate table stage'; 
    
       -- replace the following with your \copy to load stage 
        insert into stage(name, email)
             values ( 'Alon muscle', 'muscle@test.com' )
                  , ( 'watson',      'watson@watson.com')         
                  , ( 'james',       'james@james.com' ); 
            
        call generate_user_idents(); 
    end ; 
    $$;

这里的演示。由于演示程序生成ids,所以它与提供的值不完全匹配,而是接近。就目前情况而言,如果您未能清除stage表或将相同的值重新输入到该表中,则该过程将乐于生成重复项。你得决定怎么处理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70509140

复制
相关文章
Apache、tomcat、Jboss、weblogic、WebSphere区别和容器的作用
总结:Apache/Tomcat/JBOSS/Nginx区别 . 1、Apache是Web服务器,Tomcat是应用(Java)服务器。Tomcat在中小型系统和并发访问用户不是很多的场合下被普遍使用。Apache支持静态页,Tomcat支持动态的。 2、Jetty:Tomcat内核作为其Servlet容器引擎,并加以审核和调优.大中型系统可以应用。能够提供数据库连接池服务,还支持其他 Web 技术的集成,譬如PHP、.NET 两大阵营. 3、JBoss是一个管理EJB的容器和服务器,但JBoss核心
小小科
2018/05/02
3.7K0
Exploiting Jolokia Agent with Java EE Servers
0x00 - About Jolokia Jolokia 是一个通过 HTTP 的 JMX 连接器,提供了类 RESTful 的操作方式,可以通过 POST JSON 的方式访问和修改 JMX 属性、执行 JMX 操作、搜索 MBean、列出 MBean 的 Meta-data 等。 Jolokia 支持提供了多种 Agents,包括 WAR Agent、OSGi Agent、JVM Agent 或者 Mule Agent。其中 WAR Agent 支持了多种 Web Server: JBoss 4.
云鼎实验室
2018/04/02
1.7K0
Exploiting Jolokia Agent with Java EE Servers
flowable camunda activiti 功能对比
flowable camunda activiti 三个框架都是从jbpm框架诞生出来的,先是有jbpm4,然后出来了一个activiti5,activiti5发展一段时间,又出来了一个Camunda。activiti5发展了4年,紧接着出来了一个flowable。本文重点对flowable camunda两个框架的功能对比。对比的camunda版本是7.10.0,flowable框架的版本是6.4.1.
全栈程序员站长
2022/08/31
8.3K1
flowable camunda activiti 功能对比
Migrating to WebSphere 9
Migrating to WebSphere 9 Make a migration plan Requirements Migrate WebSphere profiles into the new WebSphere Keep profiles' locations as the original path Prepare Install the new WebSphere Setup variables At first, we need to record variables related to
绿巨人
2018/05/16
9480
在eclipse中使用Tomcat8.5时,出现了如下错误:
在建立Tomcat服务时,eclipse会自动生成一个Servers的项目. 在这个项目中,找到你部署项目的服务文件夹. 在这个文件夹下有一个"server.xml"文件,打开这个文件,删除里面对应项目的Context节点即可。
兮动人
2021/06/11
3.7K0
在eclipse中使用Tomcat8.5时,出现了如下错误:
Tomcat原理剖析-tomcat介绍和源码idea构建
Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。
程序猿川子
2022/08/10
7880
8.5 DebuggerPresent
CheckRemoteDebuggerPresent 也是一个微软提供的反调试函数,该函数可以在本地或者远程进程中使用。函数接收两个参数进程句柄和一个指向布尔值的指针。如果指定的进程正在被调试,则函数会把指向布尔值的指针设为 TRUE,否则设为FALSE。
微软技术分享
2023/09/27
1610
8.5 DebuggerPresent
【JAVA调错】----JBoss发布多个项目时抛出webAppRootKey错误
进行如上配置后,修改log4j.xml后,在刷新间隔时间后,配置的监听器Log4jConfigListener会重新加载log4j相关配置。
令仔很忙
2018/09/14
1.1K0
迁移Hexo到halo
此前,我使用hexo,犹豫hexo是静态的,有所不便。无意之中发现这款博客框架。此博客使用java所以,内存需求比较高。优点是美观,支持批量导入md。
Innei
2021/12/28
1.2K0
8.5 DebuggerPresent
CheckRemoteDebuggerPresent 也是一个微软提供的反调试函数,该函数可以在本地或者远程进程中使用。函数接收两个参数进程句柄和一个指向布尔值的指针。如果指定的进程正在被调试,则函数会把指向布尔值的指针设为 TRUE,否则设为FALSE。
微软技术分享
2023/10/11
1290
迁移 VPS 到 Vultr
趁着中秋节之前总算是把我的 VPS 迁移到了 Vultr,域名也换了一个 .me 结尾的,更有个人网站的感觉,但是一年下来也得多花不少钱,疼死我了。
kifuan
2022/10/24
18.7K0
迁移 VPS 到 Vultr
迁移 Nginx 到 Envoy
大部分的应用可能还是使用的比较传统的 Nginx 来做服务代理,本文我们将介绍如何将 Nginx 的配置迁移到 Envoy 上来。我们将学到:
我是阳明
2020/06/15
1.3K0
迁移 Nginx 到 Envoy
Linux下Jboss安装使用+Jboss部署脚本「建议收藏」
Jboss是Java EE应用服务器(就像Apache是web服务器一样),专门用来运行Java EE程序的。
全栈程序员站长
2022/09/27
4.9K0
Linux下Jboss安装使用+Jboss部署脚本「建议收藏」
Jboss安装
 1、下载http://pan.baidu.com/s/1bnmYN7p,解压jboss-as-7.1.1.Final.zip即完成安装
week
2018/08/27
1.3K0
8.5 存储紧缩
1、在整个动态存储管理过程中,不管哪个时刻,可利用空间都是一个地址连续的存储区,在编译程序中称之为“堆”,每次分配都是从这个可利用空间中划出一块。
小林C语言
2020/12/12
3980
8.5 存储紧缩
IBM WebSphere MQ 系列(三)配置和使用WebSphere MQ
配置和使用WebSphere MQ A.设置环境变量   在shell中执行MQ的控制命令:     ctrmqm     strmqm   若识别这些命令,则说明PATH环境变量已配置好了;   若提示找不到命令,则说明需配置Linux环境变量,指定MQ的bin路径到PATH:      可选择修改系统的环境变量(/etc/profile文件,对全部用户可见),      或只修改用户mqadmin的环境变量(/var/mqm/.bash_profile,只对当前用户可见。     下面列出前者的修改方式
Java学习123
2018/05/16
6.4K0
JBoss 主要模块
本文介绍了JBoss的主要模块,包括JBoss EJB容器、JBossNS、JBossTX、部署服务、JBossMQ、JBossSX和JBossCX。JBoss EJB容器是JBoss服务器的核心实现,支持热部署。JBossNS提供命名服务,用于定位对象和资源。JBossTX支持JTA/JTS和交易管理。部署服务支持EJB、Web应用和企业级应用的部署。JBossMQ是Java消息服务规范实现。JBossSX支持安全实现,包括基于JAAS的或不支持JAAS机制的安全。JBossCX实现了部分JCA功能。Web服务器支持Web容器和Servlet引擎。
YGingko
2017/12/28
1.5K0
eclipse + JBoss 5 +
有时客户端程序(如JSP、Servlet)会和EJB组件运行在同一个JVM上,如在同一个J2EE服务器(JBoss、Weblogic等)中运行。这时就没必要 再通过远程(remote)接口访问Session Bean了,因为客户端和session bean都在同一个jvm上,只需要通过本地接口(local)访问即可。就象直接访问本地类一样(当然,不能直接访问EJB类,需要使用jndi和local接口来获得本地接口对象。当然,也可以通过remote接口来访问ejb,不过这样会有一些性能损失。就象在同一台机器上还通过socket进行访问一样,很多性能都损耗在网络上了。下面我们来举个简单的例子来看一下如何使用本地接口来访问session bean。     先建立一个session bean本地接口,代码如下:
py3study
2020/01/14
6700
jboss下载和安装[通俗易懂]
1. 下载 http://www.jboss.org/jbossas/downloads/ 选择Certified Java EE 6 Full Profile版本,我下载的是 jboss-as-7.1.1.Final.zip。 2. 解压 jboss-as-7.1.1.Final.zip 注意整个路径必须没有空格才行。 3. 配置环境变量 JRE 环境变量 JAVA_HOME JRE的路径 CLASSPATH %JAVA_HOME%\lib PATH %JAVA_HOME%\bin
全栈程序员站长
2022/09/28
2.5K0
jboss下载和安装[通俗易懂]
点击加载更多

相似问题

Websphere到Jboss的迁移

12

WebLogic8.1到Websphere 8.5迁移

14

IBM websphere到JBOSS的迁移

24

WebSphere8.5应用程序到IBM迁移上的Websphere自由

10

从Tomcat6.0迁移到WebSphere 8.5

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文