我使用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
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"并由1
(ID
)替换?这使得一切都迅速向右移动。