sql - 由于列中的双引号超过 2 个,sqlldr 失败
问题描述
问题是当我在 NAME 列中放置两个以上的双引号时(检查下面的代码)然后 sqlldr 失败。在data.txt文件中,前 3 条记录失败,因为 NAME 列(记录中的第二个位置)有超过 2 个双引号。请协助。我认为我需要针对 NAME 列将一些功能放入控制文件中。
您可以运行以下代码并检查,前 3 条记录将失败,最后一条记录将被插入,我想插入所有带或不带双引号的记录:
--table creation
create table employee
(
name varchar2(4000)
);
--control file
load data
infile '/tmp/swetabh/data.txt'
into table employee
truncate
fields terminated by "," OPTIONALLY ENCLOSED by '"' TRAILING NULLCOLS
(
name
)
--data.txt (SEE ALL RECORDS ARE HAVING MORE THAN 2 DOUBLE QUOTE AND WANT TO INSERT DATA TO THE TABLE WITH OR WITHOUT DOUBLE QUOTE)
""start with double quote "
"end with double quote ""
"double quote " in the middle "
-bash-4.1$ sqlldr userid=xxx/xxx@xxxx control=/tmp/swetabh/control.txt log=/tmp/swetabh/control.log bad=/tmp/swetabh/bad.txt readsize=2000000000 bindsize=2000000000
解决方案
您对流程的提取部分有任何控制权吗?如果是这样,您可以指定数据中的双引号加倍(引用)吗?或者更好的是,指定使用管道作为分隔符,并且不使用双引号。
推荐阅读
- .net - 如何将自定义标头添加到 AWS S3 .NET SDK GetObjectRequest?
- javascript - 在考虑相同值的键的同时将数组转换为对象
- javascript - 使用 Javascript 在屏幕外创建窗口?
- flutter - 如果 Row 有两个 Text 小部件,则设备上没有 Flutter 视图可用
- php - 如何正确使用与 php 相关的“活动”类
- python - 与 python3 一起使用时,ConfigParser 库不起作用
- kubernetes - 我如何在 Kubernetes 中创建新的命名空间
- c++ - 如何根据模板类的基类专门化成员函数
- c - 将文本文件读入 C 中的二维数组
- php - 将订单客户备注添加到 YITH Woocommerce PDF 发票