如何使用sql loader跳过文本的某些部分来存储数据?

时间:2016-08-27 09:21:46

标签: sql oracle

我想在以下数据文件

上运行Sql Loader
1#text:a#hii
2#text:ab#hii
3#text:abc#hii
4#text:abcd#hello
5#text:abcde#hello

我想将数据存储在名为' demo'的表中。如

c1 c2  c3
-- --- ---
1  a   hii
2  ab  hii 
3  abc hii

等等。 我不能使用位置,因为c2的长度可以是任意长度。

如何为此制作ctl文件?

2 个答案:

答案 0 :(得分:0)

您可以使用位置查找,假设您搜索的#似乎是列的主要分隔。搜索第一个#的位置,子串出以下5个字符('text:')。然后找到下一个哈希的位置。或者使用冒号的位置等等。直到你。

在sql中查看charindex()。第三个参数允许您设置搜索偏移量。

答案 1 :(得分:0)

这可以通过在分隔符中使用分隔符来完成。

这是控制文件

加载数据

infile *

附加到表演示中 ( C1, x填料由':'终止, C2, C3 )

BEGINDATA

1#文字:a#HII

2#文本:AB#HII

3#文本:ABC#HII

4#文本:ABCD#你好

5#文本:ABCDE#你好

其中x只是一个虚拟列(表中没有),其值设置为' text'。