最近很多小伙伴都在问通过SQLLDR将多个csv加载到一个表中这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展c#–实体框架:将多个类映射到一个表、DjangoRestapi-如何
最近很多小伙伴都在问通过SQLLDR将多个csv加载到一个表中这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展c# – 实体框架:将多个类映射到一个表、Django Rest api - 如何将多个表中的数据插入到单个表中、linux 合并多个csv文件到一个文件,并且只保留一个表头、Linux环境下sqlldr一个csv文件等相关知识,下面开始了哦!
本文目录一览:- 通过SQLLDR将多个csv加载到一个表中
- c# – 实体框架:将多个类映射到一个表
- Django Rest api - 如何将多个表中的数据插入到单个表中
- linux 合并多个csv文件到一个文件,并且只保留一个表头
- Linux环境下sqlldr一个csv文件
通过SQLLDR将多个csv加载到一个表中
我正在使用SQL LOADER在一个表中加载多个csv文件。我发现的过程非常简单,就像
LOAD
DATA
INFILE '/path/file1.csv'
INFILE '/path/file2.csv'
INFILE '/path/file3.csv'
INFILE '/path/file4.csv'
APPEND INTO TABLE TBL_DATA_FILE
EVALUATE CHECK_CONSTRAINTS
REENABLE DISABLED_CONSTRAINTS
EXCEPTIONS EXCEPTION_TABLE
FIELDS TERMINATED BY ","
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
COL0,COL1,COL2,COL3,COL4
)
但是我不想多次使用INFILE,因为如果我有1000个以上的文件,那么我必须在控制文件脚本中提及1000次INFILE。
所以我的问题是:是否有其他方法(如任何循环/任何* .csv)加载多个文件而不使用多个infile?
谢谢你
c# – 实体框架:将多个类映射到一个表
在我的数据库模型中 – 我无法修改 – 我有冗余列,我想存储在不同的类中.
示例:
public class DateParams { public DateTime CreationDate { get; set; } public DateTime ModificationDate { get; set; } // some methods } public class Localization { public String EnglishLabel { get; set; } public String frenchLabel { get; set; } // some methods }
然后我会在我的一些模型中使用它们:
public class Account // Localization && DateParams { public int ID { get; set; } public String Name { get; set; } public Localization Localization { get; set; } public DateParams DateParams { get; set; } } public class Lead // DateParams only { public int ID { get; set; } public String Name { get; set; } public DateParams DateParams { get; set; } }
我想要实现的是拥有这样的东西
public class LocalizationMap : EntityTypeConfiguration<Localization> { public LocalizationMap() { Property(e => e.EnglishLabel).HasColumnName("en"); Property(e => e.frenchLabel).HasColumnName("fr"); } } public class AccountMap : EntityTypeConfiguration<Account> { public AccountMap() { HasKey(x => x.ID); Property(e => e.Name).HasColumnName("Name"); HasSubMapping(new LocalizationMap()); HasSubMapping(new DateParamsMap()); ToTable("Account"); } }
我可以使用继承来解决这个问题,但C#不允许多重继承.
解决方法
对于你的例子:
protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.ComplexType<Localization>(); modelBuilder.Entity<Account>().Property(x => x.Localization.EnglishLabel).HasColumnName("en"); modelBuilder.Entity<Account>().Property(x => x.Localization.frenchLabel).HasColumnName("fr"); // et cetera }
Django Rest api - 如何将多个表中的数据插入到单个表中
如何解决Django Rest api - 如何将多个表中的数据插入到单个表中?
我写了一个查询,我只是从多个表中选择不同的列。 我正在学习 Django rest apis,我想编写一个 api,其中我的查询中的数据被插入到我的自定义转储表中。如果您能简短地回答我的问题,我将不胜感激。这是我的查询。
query= """ select pa.height,pa.weight,pa.muac,pa.tsf,pa.bmi,pa.nutritionist_comment,pa.create_date_app_side,hp.gender,hp.name,hp.regn_date_hospital,hp.dob,hp.city,hp.diagnosis_list_id,hp.diagnosis_stage,hg.first_name,hg.phone_number,hg.preferred_language_id
from patientcounselling_anthropometric as pa
join hospital_patient as hp on hp.uuid=pa.patient_uuid
join hospital_guardian hg on hg.patient_uuid=hp.uuid """
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
linux 合并多个csv文件到一个文件,并且只保留一个表头
linux合并多个csv文件到一个文件
cat a.csv <(tail +2 b.csv) > c.csv
上面这条命令就是将a.csv和b.csv合并到一个c.csv文件,其中a.csv是全部数据,b.csv是从第2行到最后的数据( 命令为 <(tail +2 x.csv) ),即去掉表头的数据。
>是覆盖写,>>是追加写
Linux shell scripts报错
另外shell脚本报错,Syntax error: "(" unexpected ,是因为.sh 文件中执行错误
解决办法:
发现 ubuntu 模式使用的是 dash 模式,如果不想报错使用 bash 模式
可使用命令 bash xxx.sh 或者 将脚本第一行改为 #!/bin/bash,执行./example.sh也可以
Linux环境下sqlldr一个csv文件
本来是练习三思的书里一个sqlldr的小示例,就是把excel文件另存为csv后通过sqlldr加载到oracle数据库中。其目的本来是为了演示一
本来是练习三思的书里一个sqlldr的小示例,就是把excel文件另存为csv后通过sqlldr加载到oracle数据库中。其目的本来是为了演示一下csv文件的sqlldr以及csv文件中的字符串中存在逗号, 和双引号”的处理方法,,结果却引出了一个让我困惑了一阵子的问题,说大不大说小不小,反复测试了一番,怀疑到了一个点上,最后一查果然是那个样子,再测试就通过了,下面总结一下。
顺便记录一个:
三思说要创建scott这个经典的schema要运行$ORACLE_HOME/rdbms/admin/scott.sql这个脚本的内容,而实际上我并没找到这个脚本,找到并运行的是utlsampl.sql
excel是这样子的:
SMITH CLEAK 3904
ALLEN SALER,M 2891
WARD SALER,"S" 3128
KING PRESIDENT 2523
另存为''ldr_case2.csv''后内容是:
SMITH,CLEAK,3904
ALLEN,"SALER,M",2891
WARD,"SALER,""S""",3128
KING,PRESIDENT,2523
一切看起都挺正常的,然后将csv上传到Oracle所在的linux服务器上,写好control文件:
load data
infile ''ldr_case2.csv''
truncate into table bonus
fields terminated by '','' optionally enclosed by ''"''
(ename,job,sal)
执行加载后日志显示为失败:
Table BONUS, loaded from every logical record.
Insert option in effect for this table: TRUNCATE
Column Name Position Len Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
ENAME FIRST * , O(") CHARACTER
JOB NEXT * , O(") CHARACTER
SAL NEXT * , O(") CHARACTER
Record 1: Rejected - Error on table BONUS, column SAL.
ORA-01722: invalid number
Record 2: Rejected - Error on table BONUS, column SAL.
ORA-01722: invalid number
Record 3: Rejected - Error on table BONUS, column SAL.
ORA-01722: invalid number
Record 4: Rejected - Error on table BONUS, column SAL.
ORA-01722: invalid number
反复测试后,终于发现我把文件中的内容放到在linux下新建的文件中,加载OK,但是看起内容一样的csv怎么改都不行,我就怀疑看起来一样的东西是不是隐藏了什么不为我察觉的差异。带着这个疑问上网搜索了一下,果然有人遇到相同的问题,隐藏的差异就是csv文件行末藏了回车符。在linux下查看对比:
[oracle@nathan-rhel5 ~]$ cat -v ldr_case2.csv
SMITH,CLEAK,3904^M
ALLEN,"SALER,M",2891^M
WARD,"SALER,""S""",3128^M
KING,PRESIDENT,2523^M
[oracle@nathan-rhel5 ~]$ cat -v ldr_case2.dat0
SMITH,CLEAK,3904
ALLEN,"SALER,M",2891
WARD,"SALER,""S""",3128
KING,PRESIDENT,2523
原来作祟的就是文件行末的^M啊!!!
把csv文件转一下格式:
[oracle@nathan-rhel5 ~]$ dos2unix ldr_case2.csv
dos2unix: converting file ldr_case2.csv to UNIX format ...
[oracle@nathan-rhel5 ~]$ cat -v ldr_case2.csv
SMITH,CLEAK,3904
ALLEN,"SALER,M",2891
WARD,"SALER,""S""",3128
KING,PRESIDENT,2523
然后再重新加载一次数据成功了:
[oracle@nathan-rhel5 ~]$ vi ldr_case2.ctl
load data
infile ''ldr_case2.csv''
truncate into table bonus
fields terminated by '','' optionally enclosed by ''"''
(ename,job,sal)
[oracle@nathan-rhel5 ~]$ sqlldr scott/tiger control=ldr_case2.ctl
SQL*Loader: Release 10.2.0.1.0 - Production on Sat Feb 22 22:47:31 2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Commit point reached - logical record count 4
[oracle@nathan-rhel5 ~]$ vi ldr_case2.log
Control File: ldr_case2.ctl
Data File: ldr_case2.csv
Bad File: ldr_case2.bad
Discard File: none specified
(Allow all discards)
Number to load: ALL
Number to skip: 0
Errors allowed: 50
Bind array: 64 rows, maximum of 256000 bytes
Continuation: none specified
Path used: Conventional
Table BONUS, loaded from every logical record.
Insert option in effect for this table: TRUNCATE
Column Name Position Len Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
ENAME FIRST * , O(") CHARACTER
JOB NEXT * , O(") CHARACTER
SAL NEXT * , O(") CHARACTER
Table BONUS:
4 Rows successfully loaded.
关于通过SQLLDR将多个csv加载到一个表中的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于c# – 实体框架:将多个类映射到一个表、Django Rest api - 如何将多个表中的数据插入到单个表中、linux 合并多个csv文件到一个文件,并且只保留一个表头、Linux环境下sqlldr一个csv文件的相关信息,请在本站寻找。
本文标签: