我有一个CSV(竖线分隔)文件,如下所示
ID|NAME|DES
1|A|B
2|C|D
3|E|F
我需要将数据插入临时表中,我已经安装了SQLLODER,但我的表只有一列。以下是从csv加载的控制文件配置。
OPTIONS (SKIP=1)
LOAD DATA
CHARACTERSET UTF8
TRUNCATE
INTO TABLE EMPLOYEE
FIELDS TERMINATED BY '|'
TRAILING NULLCOLS
(
NAME
)
如何从csv中的第二列中选择数据并仅插入表EMPLOYEE
中的一列?
如果您有任何疑问,请与我们联系。
答案 0 :(得分:1)
如果你正在使用a filler
field,你不需要在数据库表中有匹配的列 - 这就是真正的重点 - 只要你知道你感兴趣的字段就是第二个,如果文件中有额外的字段,你不需要修改控制文件,你只需要指定它们。
所以这很有用,只添加了填充ID字段和您显示的三字段数据文件:
None
Dmoe'd with:
case class Player(name: String)
def lookupPlayer(id: Int): Option[Player] = {
if (id == 1) Some(new Player("Sean"))
else if(id == 2) Some(new Player("Greg"))
else None
}
def lookupScore(player: Player): Option[Int] = {
if (player.name == "Sean") Some(1000000) else None
}
println(lookupPlayer(1).map(lookupScore)) // Some(Some(1000000))
println(lookupPlayer(2).map(lookupScore)) // Some(None)
println(lookupPlayer(3).map(lookupScore)) // None
向数据文件添加更多字段没有区别,只要它们位于您实际感兴趣的字段之后。同样适用于external tables,这对于临时/临时表更方便,只要CSV文件在数据库服务器上可用。
答案 1 :(得分:0)
数据文件中需要从负载中排除的列可以定义为FILLER。
在给定的示例中使用以下内容。列出所有传入字段并向这些列添加填充符需要从加载中忽略,例如 ( ID FILLER, 名称, DES FILLER ) 这里的另一个问题是忽略标题行,因为只需使用OPTIONS子句,例如 OPTIONS(SKIP = 1) 加载数据......
此致 R上。