用于读取逗号或制表符或管道 separated/delimited 数据的 SQLLoader 控制文件?
SQLLoader control file for reading comma or tab or pipe separated/delimited data?
我有三种数据,即逗号或制表符或管道分隔的数据,是否尝试使用单个控制文件摄取逗号或制表符或管道分隔的数据?
是否可以使用单个控制文件加载不同类型的分隔数据?
彩蛋:
Test1.csv
内容:
firstname,lastname
rachel,green
chandler,bing
Test2.tsv
内容:
firstname lastname
rachel green
chandler bing
Test3.psv
内容:
firstname|lastname
rachel|green
chandler|bing
我当前的控制文件:
test.ctl
load data into table USERNAMES APPEND fields terminated by '\t' (firstname,lastname)
Expecting something like:
load data into table USERNAMES APPEND fields optionally terminated by '\t' or "," or "|" (firstname,lastname)
不,不幸的是你不能使用相同的控制文件
我相信 sqlldr 只允许使用一个分隔符,因此您可以使用脚本重新处理文件以使所有分隔符首先相同(您需要知道这些字符是否可能在数据中 - 可能变得丑陋),从技术上讲,这会改变传入的数据。
或者,您可以在如上所述预处理后将文件加载到可以执行一些健全性检查的暂存 table 中,然后如果健全性检查和验证通过,则加载到主数据中 table。
我有三种数据,即逗号或制表符或管道分隔的数据,是否尝试使用单个控制文件摄取逗号或制表符或管道分隔的数据?
是否可以使用单个控制文件加载不同类型的分隔数据?
彩蛋:
Test1.csv
内容:
firstname,lastname
rachel,green
chandler,bing
Test2.tsv
内容:
firstname lastname
rachel green
chandler bing
Test3.psv
内容:
firstname|lastname
rachel|green
chandler|bing
我当前的控制文件:
test.ctl
load data into table USERNAMES APPEND fields terminated by '\t' (firstname,lastname)
Expecting something like:
load data into table USERNAMES APPEND fields optionally terminated by '\t' or "," or "|" (firstname,lastname)
不,不幸的是你不能使用相同的控制文件
我相信 sqlldr 只允许使用一个分隔符,因此您可以使用脚本重新处理文件以使所有分隔符首先相同(您需要知道这些字符是否可能在数据中 - 可能变得丑陋),从技术上讲,这会改变传入的数据。
或者,您可以在如上所述预处理后将文件加载到可以执行一些健全性检查的暂存 table 中,然后如果健全性检查和验证通过,则加载到主数据中 table。