为什么SQL Server使用bcp严重导入我的CSV文件?

时间:2017-09-29 10:01:10

标签: sql-server bcp

我使用bcp在我的SQL表中插入一个CSV文件,但我的结果很奇怪。 所有环境都在Linux上,我在Bash中使用IFS = \ n创建CSV文件。 BCP也是像Bash一样运行的:

bcp Table1 in "./file.csv" -S server_name -U login_id-P password -d databse_name -c -t"," -r"0x0A"

file.csv约为5万行。 BCP告诉我他复制了25K行。没有警告,没有错误。我试过一个只有2行的小样本,结果如​​下:

file.csv数据:

A.csv, A, B
C.csv, C, D

我的表Table1

CREATE TABLE Table1 (
    ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    a VARCHAR(8),
    b VARCHAR(8),
    c VARCHAR(8)
    FOREIGN KEY (a) REFERENCES Table2(a)
);

Table2是一个非常基本的表格,就像Table1

一样

当我执行SELECT * FROM Table1

时,我在Microsoft SQL Server Manager Studio中可以看到的内容
ID | a | b |     c       |
1    A   BC C.csv       E

我这样导出bcp

bcp Table1 out"./file_export.csv" -S server_name -U login_id-P password -d databse_name -c -t"," -r"0x0A"

我在file_export.csv

中得到了什么
1, A, B
C, C.csv, D, E

我在NotePad ++上查看任何奇怪的文件结尾,它们都是EF(50k行),每个值都被逗号分隔。

更新: 更改选项-t-r不会改变任何内容。所以我的CSV格式正确。我认为问题是我尝试在x字段的表格中导入x+1列(自动递增ID)。 所以我使用最简单的命令bcp

bcp Table1 in "./file.csv" -S server_name -U login_id-P password -d databse_name -c 

以下是我SELECT * FROM Table1;的内容     ID a b c     1 A BC.csv C,D 这是我的预期:

1,A.csv,A,B
2,C.csv,C,D

为什么我的第一个字段是" eaten"并由1ID)替换?这使得一切都迅速向右移动。

0 个答案:

没有答案