我正在寻找使用BULK INSERT
将.csv
文件导入SQL Server的帮助,我有几个基本问题。
问题:
,
(逗号)(例如: description),那么如何进行导入操作来处理这些数据?""
(双引号)中,如下例所示,那么导入如何处理此问题?下面是带有标题的示例CSV:
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语句:
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
)
发布于 2013-03-06 17:45:05
基于SQL Server CSV导入
1) CSV文件数据之间可能有
,
(逗号)(例如: description),那么如何进行导入处理这些数据?
解决方案
如果使用,
(逗号)作为分隔符,则无法区分逗号作为字段终止符和数据中的逗号。我会使用不同的FIELDTERMINATOR
,比如||
。代码看起来像这样,这将完美地处理逗号和单斜杠。
2)如果客户端从excel中创建csv,那么带有逗号的数据会像下面的例子一样被
" ... "
(双引号)括起来,那么导入应该如何处理呢?
解决方案
如果使用BULK insert,则无法处理双引号,数据将通过双引号插入到行中。在将数据插入到表中之后,您可以用'‘替换这些双引号。
update table
set columnhavingdoublequotes = replace(columnhavingdoublequotes,'"','')
3)我们如何跟踪某些行是否有错误的数据,哪些导入跳过?( import是否跳过不可导入的行)?
解决方案
为了处理由于无效数据或格式而未加载到表中的行,可以使用ERRORFILE property来处理,指定错误文件名,它会将有错误的行写到错误文件中。代码应该是这样的。
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
)
发布于 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上找到的(我已经使用过并测试过了):
发布于 2018-01-23 17:11:11
2)如果客户端从excel创建csv,则带逗号的数据将包含在“...”中。(双引号)作为下面的例子,那么导入如何处理这个问题呢?
应使用FORMAT = 'CSV',FIELDQUOTE = '"‘选项:
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
)
https://stackoverflow.com/questions/15242757
复制相似问题