sum*_*mit 11 sql sql-server csv bulkinsert
下面是csv的示例行
012,12/11/2013,"<555523051548>KRISHNA KUMAR ASHOKU,AR",<10-12-2013>,555523051548,12/11/2013,"13,012.55",
Run Code Online (Sandbox Code Playgroud)
你可以看到KRISHNA KUMAR ASHOKU,AR作为单场,但它因为逗号而将KRISHNA KUMAR ASHOKU和AR视为两个不同的领域,尽管它们附有"但仍然没有运气
我试过了
BULK
INSERT tbl
FROM 'd:\1.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n',
FIRSTROW=2
)
GO
Run Code Online (Sandbox Code Playgroud)
它有什么解决方案吗?
Hel*_*ker 14
他们添加了对此 SQL Server 2017 (14.x) CTP 1.1 的支持。您需要对 BULK INSERT 命令使用 FORMAT = 'CSV' 输入文件选项。
需要明确的是,这是给我带来问题的 csv 的样子,第一行很容易解析,第二行包含曲线球,因为引用的字段内有一个逗号:
jenkins-2019-09-25_cve-2019-10401,CVE-2019-10401,4,Jenkins Advisory 2019-09-25: CVE-2019-10401:
jenkins-2019-09-25_cve-2019-10403_cve-2019-10404,"CVE-2019-10404,CVE-2019-10403",4,Jenkins Advisory 2019-09-25: CVE-2019-10403: CVE-2019-10404:
Run Code Online (Sandbox Code Playgroud)
损坏的代码
BULK INSERT temp
FROM 'c:\test.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '0x0a',
FIRSTROW= 2
);
Run Code Online (Sandbox Code Playgroud)
工作代码
BULK INSERT temp
FROM 'c:\test.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '0x0a',
FORMAT = 'CSV',
FIRSTROW= 2
);
Run Code Online (Sandbox Code Playgroud)
dav*_*pfx 11
答案是:你做不到.请参阅http://technet.microsoft.com/en-us/library/ms188365.aspx.
"从CSV文件导入数据
SQL Server批量导入操作不支持逗号分隔值(CSV)文件.但是,在某些情况下,CSV文件可用作将数据批量导入SQL Server的数据文件.有关从CSV数据文件导入数据的要求的信息,请参阅为批量导出或导入准备数据(SQL Server)."
一般的解决方案是您必须将CSV文件转换为可以成功导入的文件.您可以通过多种方式执行此操作,例如使用不同的分隔符(例如TAB)创建文件,或者使用了解CSV文件(例如Excel或许多脚本语言)的工具导入表并使用唯一的方法导出表格分隔符(如TAB),然后您可以从BULK INSERT.
不幸的是,SQL Server导入方法(BCP && BULK INSERT)不理解引用""
来源:http://msdn.microsoft.com/en-us/library/ms191485%28v=sql.100%29.aspx
| 归档时间: |
|
| 查看次数: |
32990 次 |
| 最近记录: |