我想在以下数据文件
上运行Sql Loader1#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文件?
答案 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'。