【问题标题】:Skip host file column in bcp format file Sybase跳过 bcp 格式文件 Sybase 中的主机文件列
【发布时间】:2015-10-27 23:24:29
【问题描述】:

我有一个这样的 csv texte 文件:

SicID;PorID;FarId;Company;DecadeId;SocName;FarName
A1;A2;A3;A4;A5;A6;A7
B1;B2;B3;B4;B5;B6;B7
C1;C2;C3;C4;C5;C6;C7

我想使用 Bcp Sybase 在 my_table 中导入此文件,但只导入 SicID、PorID 和 SocName。所以我用这个bcp格式文件:

10.0
8
1   SYBCHAR 0   2   ";" 1   SicId
2   SYBCHAR 0   2   ";" 2   PorId
3   SYBCHAR 0   0   ""  0   FundId
4   SYBCHAR 0   0   ""  0   Company
5   SYBCHAR 0   0   ""  0   DomicileId
6   SYBCHAR 0   2   ";" 3   SocName
7   SYBCHAR 0   0   ""  0   FundName
8   SYBCHAR 0   10  "\r\n" 0    end

不幸的是,当我导入它时,my_table 没有好的数据。它不会跳过文本文件的 3、4、5 主机列,而是用其他难以理解的列填充 my_table。

有没有解决方案可以跳过主机列来填充我的表格?

我的表

SicID;PorID;SocName
A1;A2;A6
B1;B2;B6
C1;C2;C6

【问题讨论】:

    标签: sybase sap-ase sqlbulkcopy bcp bulk


    【解决方案1】:

    您遇到的问题是您要省略的列上没有终止符,请检查下图(我从here得到它):

    基本上,如果您想省略源文件中的列,只需:

    1. 用作服务器列顺序 = 0
    2. 必须指定终止符!
    3. 源文件的长度也很重要。
    4. 服务器列名仅供参考

    例如,使用您在问题中提供的示例数据,您的 .fmt 文件应如下所示:

    10.0
    8
    1   SYBCHAR 0   2   ";"    1   SicId
    2   SYBCHAR 0   2   ";"    2   PorId
    3   SYBCHAR 0   2   ";"    0   FarId
    4   SYBCHAR 0   2   ";"    0   Company
    5   SYBCHAR 0   2   ";"    0   DecadeId
    6   SYBCHAR 0   2   ";"    3   SocName
    7   SYBCHAR 0   2   ";"    0   FarName
    8   SYBCHAR 0   10  "\r\n" 0   end
    

    【讨论】:

    • 你有没有让这个工作。我记得我花了很多时间测试不同的选项,但没有成功。
    • 是的,先生,实际上我在第一次尝试运行它时也遇到了问题,并阅读了这些帖子,然后当它最终对我有用时,我在这里发布了答案......
    【解决方案2】:

    ASE 格式文件不能像在 SQL Server 中那样用于省略 reorder or skip 列。在这种情况下,您应该 bcp 进入临时表,然后选择行进入生产表。

    或者,您可以创建一个脚本(python、shell 等)来预处理文件以删除不需要的列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-05
      • 1970-01-01
      • 2013-12-10
      • 2017-01-20
      • 2020-02-02
      • 1970-01-01
      • 2023-03-12
      • 2017-08-20
      相关资源
      最近更新 更多