我正在尝试使用 dbisql 的 Load 命令将一堆 csv 上传到 SybaseIQ。我的 CSV 看起来像这样
"ps,abc","jgh","kyj"
"gh",""jkl","qr,t"
我的加载命令和其他选项是这些:
set temporary option ISQL_LOG = '/path/for/log/file';
set temporary option DATE_ORDER = 'MDY';
Load table test (a, b, c)
Format bcp
Strip RTRIM
Escapes OFF
quotes ON
Delimited by ','
我创建了一个类似上面的“.ctl”文件,然后使用以下命令执行它:
dbisql -c "uid = xxx; pwd = yyyy" -host aaaa - port 1089 -nogui test.ctl
执行时出现以下错误:
Non-space text found after ending quote character for an enclosed field.
--(db_RecScanner.cxx 2473)
SQLCODE=-1005014, ODBC 3 state="HY000"
然而
它适用于以下 csv 格式
"ps,abc","jgh",kyj
"gh",""jkl",qrt
即,如果最后一列没有双引号,它可以工作。但我所有的文件在每个元素周围都有双引号。
还有以下 .ctl 文件
set temporary option ISQL_LOG = '/path/for/log/file';
set temporary option DATE_ORDER = 'MDY';
Load table test (a ASCII(8), b ASCII(7), c ASCII(7))
Strip RTRIM
Escapes OFF
quotes ON
Delimited by ','
能够像第一个 csv 样本一样将数据插入到数据库中,但它也会插入引号和逗号,还会弄乱数据:
例如:数据库中的第一行看起来像
"ps,abc" ,"jgh", "kyj""g
与
ps,abc jgh kyj
我想弄清楚问题是什么我已经阅读了 sybase 和 dbisql 的手册,并且根据第一个控制文件应该能够正确加载数据,但它没有这样做。对此的任何帮助将不胜感激。提前致谢
我的表结构也是这样的:
a(varchar(8)) b(varchar(7)) c(varchar(7))