【发布时间】:2019-03-31 06:46:58
【问题描述】:
我是这样设置架构的:
sqlcmd -S localhost -U <user> -P <pw> -d <relation> -Q "CREATE TABLE vehicle_reg (record_type varchar, vin varchar, registration_class varchar, city varchar, state varchar, zip int, county varchar, model_year int, make varchar, body_type varchar, fuel varchar, unladen_weight int, max_gross_weight int, passengers int, reg_valid_date date, reg_expiration_date date, color varchar, scofflaw varchar, suspension varchar, revocation varchar);"
为了测试这一点,我的 CSV 文件正好包含 1 行:
VEH ,5NMSGDAB5AH372379,PAS,ALEXANDRIA BAY ,NY,13607,JEFFERSON ,2010,HYUND,SUBN,GAS ,3875,,,06/26/2017,07/06/2019,WH ,N,N,N
这是我发出bcp 命令的方式:
bcp <db> in one-line.csv -S localhost -U <user> -P <pw> -d <relation> -n -t','
但它根本不会复制任何东西:
Starting copy...
0 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total : 1
如果我改为提供完整的 CSV 文件,我会得到
Error = [Microsoft][ODBC Driver 17 for SQL Server]Unexpected EOF encountered in BCP data-file。
有什么提示吗?
【问题讨论】:
-
文件是否有行终止符 - 尝试添加一个空行。另外,您是否尝试使用向导加载文件以检查它是否加载?
-
它没有空行(wc -l 给出 1)但我手动验证它确实有一个正确的 Unix 行终止符 \n。我不确定“向导”是什么。
-
在 MS SQL Server Management Studio 中有一个向导来传输数据。此外,错误消息很清楚 - 它不喜欢 EOF 文件标记;尝试不同的行尾或插入一个空行。
-
@Covi 我很确定 MS SQL 需要一个 Windows 换行符 (\r\n)
-
文档说你需要使用
-r '0x0A'来做你想做的事。 docs.microsoft.com/en-us/sql/relational-databases/import-export/…
标签: sql-server database csv bcp