【问题标题】:Load table issue - BCP from flat file - Sybase IQ加载表问题 - 来自平面文件的 BCP - Sybase IQ
【发布时间】:2016-01-15 22:33:38
【问题描述】:

我在尝试从平面分隔文件到 Sybase IQ 表中执行 bcp 时遇到以下错误。

无法执行语句。
在封闭字段的引号字符结束后找到非空格文本。

我无法在文件中观察到任何非空格文本,但这个错误阻止了我进行批量复制。 | 是列分隔符," 作为文本限定符,\n 是行分隔符。
下面是相同的示例模板,我正在使用。

LOAD TABLE TABLE_NAME(a NULL('(null)'),b NULL('(null)'),c NULL('(null)')) USING CLIENT FILE '/home/...../a.txt' //unix QUOTES ON FORMAT bcp STRIP RTRIM DELIMITED BY '|' ROW DELIMITED BY '\n'

当我使用 QUOTES OFF 执行相同的查询时,加载成功。但是,QUOTES ON 导致相同的查询失败。我也想去掉引号。

样本数据

12345|“abcde”|(空) 12346|“abcdf”|“zxf” 12347|(空)|(空) 12348|"abcdg"|"zyf"

任何线索都会有所帮助!

【问题讨论】:

  • 你能给我们看几行数据吗?
  • @jboi 添加了示例。不确定,每行末尾是否有隐藏字符。我无法从我的任何记事本或 vim 中追踪它们。
  • 文件的平台是什么? *nix 和 Windows 的任何组合?除此之外,您可以在 BCP 之前使用脚本去除引号。我的大部分 bcp 工作都与 ASE 相关,因此我对 IQ 可能出现的问题不太熟悉。
  • @MichaelGardner 平面文件是从 unix 环境生成的,我也尝试从 unix 环境加载它们

标签: sybase quotes bcp sap-iq


【解决方案1】:

如果 IQ bcp 与 ASE 相同,那么我认为那些“(null)”字段被解释为字符串,而不是 NULL 字段。 您需要流式编辑那些(空)。 您使用的是 unix,因此请使用 sed 或 perl -ne。 例如。通过“| perl -pne 's/(null)//g'”将文件传送到加载命令或文件名。 QUOTES OFF 似乎可行,但我想知道当您查看加载的数据时,您是否会在第二个字段中看到双引号,以及您希望字段为 NULL 的“(null)”。

【讨论】:

    猜你喜欢
    • 2018-09-29
    • 1970-01-01
    • 2018-06-13
    • 2023-04-01
    • 2016-04-05
    • 2018-09-08
    • 2018-07-01
    • 1970-01-01
    • 2015-09-19
    相关资源
    最近更新 更多