2010-05-04 42 views
1

我有一个自备的CSV文件的几个PostgreSQL的表,我想导入到Oracle数据库具有匹配模式的转储。我发现了一些关于如何将数据从一个CSV“表格”分发到多个Oracle表格的文章,但是我的问题是同一个文件中有几个不同的CVS“表格”。加载多个链接的CSV文件到Qracle与SQLLDR

是否可以指定表分离器或在某种程度上标志着一个SQLLDR控制文件的新表,或做我必须手动分割文件喂养它SQLLDR过吗?

回答

3

这取决于您的数据。你如何确定一行的目的地是哪一个?如果您可以根据行中的数据确定哪个表格,那么使用WHEN很容易。

LOAD DATA 
    INFILE bunchotables.dat 
INTO TABLE foo WHEN somecol = 'pick me, pick me' (
    ...column defs... 
) 
INTO TABLE bar WHEN somecol = 'leave me alone' (
    ... column defs 
) 

如果你有某种标题行确定的目标表,那么你将不得不将它的手之前,其他实用程序拆分。

+0

+1这应该做到这一点。 – DCookie 2010-05-04 17:22:43

+0

是的,这听起来不错 - 像这样的东西也适用于表之间的单个标记?我得到的格式如下所示: COPY foo(foo_1,foo_2)FROM stdin; \。 COPY bar(bar_1,bar_2)FROM stdin; \。 – VolkA 2010-05-04 18:31:42

+0

不,正如我所说,SQLLDR是不会处理表之间的单一标记。你需要写一个Perl/Python的/红宝石/不管脚本扫描您的源文件并把它们分成每桌1个文件。这应该很容易做到。但是你没有给我们足够的信息来帮助你。 – 2010-05-04 18:53:54