首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将CSV文件导入SQL Server

将CSV文件导入SQL Server
EN

Stack Overflow用户
提问于 2013-03-06 16:53:42
回答 13查看 931.1K关注 0票数 215

我正在寻找使用BULK INSERT.csv文件导入SQL Server的帮助,我有几个基本问题。

问题:

  1. CSV文件数据之间可能有, (逗号)(例如: description),那么如何进行导入操作来处理这些数据?
  2. 如果客户端从Excel创建CSV文件,则带有逗号的数据将包含在"" (双引号)中,如下例所示,那么导入如何处理此问题?
  3. 我们如何跟踪某些行是否有错误数据,哪些导入会跳过?(导入操作将跳过不可导入的行)

下面是带有标题的示例CSV:

代码语言:javascript
复制
Name,Class,Subject,ExamDate,Mark,Description
Prabhat,4,Math,2/10/2013,25,Test data for prabhat.
Murari,5,Science,2/11/2013,24,"Test data for his's test, where we can test 2nd ROW, Test."
sanjay,4,Science,,25,Test Only.

和要导入的SQL语句:

代码语言:javascript
复制
BULK INSERT SchoolsTemp
FROM 'C:\CSVData\Schools.csv'
WITH
(
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',  --CSV field delimiter
    ROWTERMINATOR = '\n',   --Use to shift the control to next row
    TABLOCK
)
EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2013-03-06 17:45:05

基于SQL Server CSV导入

1) CSV文件数据之间可能有, (逗号)(例如: description),那么如何进行导入处理这些数据?

解决方案

如果使用, (逗号)作为分隔符,则无法区分逗号作为字段终止符和数据中的逗号。我会使用不同的FIELDTERMINATOR,比如||。代码看起来像这样,这将完美地处理逗号和单斜杠。

2)如果客户端从excel中创建csv,那么带有逗号的数据会像下面的例子一样被" ... " (双引号)括起来,那么导入应该如何处理呢?

解决方案

如果使用BULK insert,则无法处理双引号,数据将通过双引号插入到行中。在将数据插入到表中之后,您可以用'‘替换这些双引号。

代码语言:javascript
复制
update table
set columnhavingdoublequotes = replace(columnhavingdoublequotes,'"','')

3)我们如何跟踪某些行是否有错误的数据,哪些导入跳过?( import是否跳过不可导入的行)?

解决方案

为了处理由于无效数据或格式而未加载到表中的行,可以使用ERRORFILE property来处理,指定错误文件名,它会将有错误的行写到错误文件中。代码应该是这样的。

代码语言:javascript
复制
BULK INSERT SchoolsTemp
    FROM 'C:\CSVData\Schools.csv'
    WITH
    (
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',  --CSV field delimiter
    ROWTERMINATOR = '\n',   --Use to shift the control to next row
    ERRORFILE = 'C:\CSVDATA\SchoolsErrorRows.csv',
    TABLOCK
    )
票数 193
EN

Stack Overflow用户

发布于 2016-02-12 22:39:18

您首先需要在数据库中创建一个表,您将在其中导入CSV文件。表创建完成后,请按照以下步骤操作。

·使用SQL Server Management Studio登录数据库

·右键单击您的数据库并选择Tasks -> Import Data...

·单击Next >按钮

·对于数据源,选择Flat File Source。然后使用Browse按钮选择CSV文件。在单击Next >按钮之前,请花一些时间配置您希望如何导入数据。

·对于目标,请选择正确的数据库提供程序(例如,对于SQL Server 2012,您可以使用SQL Server Native Client 11.0)。输入服务器名称。选中Use SQL Server Authentication单选按钮。在单击Next >按钮之前,输入用户名、密码和数据库。

·在Select Source Tables and Views窗口中,您可以在单击Next >按钮之前编辑映射。

·选中Run immediately复选框并单击Next >按钮。

·单击Finish按钮以运行程序包。

上面是在这个website上找到的(我已经使用过并测试过了):

票数 42
EN

Stack Overflow用户

发布于 2018-01-23 17:11:11

2)如果客户端从excel创建csv,则带逗号的数据将包含在“...”中。(双引号)作为下面的例子,那么导入如何处理这个问题呢?

应使用FORMAT = 'CSV',FIELDQUOTE = '"‘选项:

代码语言:javascript
复制
BULK INSERT SchoolsTemp
FROM 'C:\CSVData\Schools.csv'
WITH
(
    FORMAT = 'CSV', 
    FIELDQUOTE = '"',
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',  --CSV field delimiter
    ROWTERMINATOR = '\n',   --Use to shift the control to next row
    TABLOCK
)
票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15242757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档