我有一个像这样的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。
是否有解决方案可以跳过主机列来填充我的表格?
MY_TABLE
SicID;PorID;SocName
A1;A2;A6
B1;B2;B6
C1;C2;C6
答案 0 :(得分:2)
您遇到的问题是您要省略的列上没有终止符,请检查以下图像(我是从here 获得的):
基本上,如果要省略源文件中的列,只需:
例如,使用您在问题中提供的示例数据,您的.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
答案 1 :(得分:-1)
ASE格式文件不能用于在SQL Server中省略reorder or skip列。在这种情况下,您应该bcp到临时表,然后在生产表中选择行。
或者,您可以创建一个脚本(python,shell等)来预处理文件以删除不需要的列。