当前位置: 首页 > 面试题库 >

将CSV文件导入SQL Server

令狐翰
2023-03-14
问题内容

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

问题:

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

  2. 如果客户端从Excel创建CSV,则用逗号括起来的数据""(用双引号引起来)(如下例所示),那么导入如何处理呢?

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

这是带有标题的示例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
)

问题答案:

基于SQL Server CSV导入

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

解决方案

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

2)如果客户端从excel创建csv,则将逗号分隔的数据括在" ... "(双引号)中(如下例所示),那么导入如何处理呢?

解决方案

如果您使用的是大容量插入,则无法处理双引号,数据将以双引号插入到行中。将数据插入表后,您可以将这些双引号替换为’ ``’。

update table
set columnhavingdoublequotes = replace(columnhavingdoublequotes,'"','')

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

解决方案

要处理由于无效数据或格式而未装入表的行,可以使用ERRORFILE属性处理,指定错误文件名,它将有错误的行写入错误文件。代码应如下所示。

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
    )


 类似资料:
  • 问题内容: 我正在寻找使用导入文件到SQL Server的帮助,我有几个基本问​​题。 问题: CSV文件数据的中间(例如:描述)之间可能有(逗号),那么如何进行导入处理这些数据? 如果客户端从Excel创建CSV,则用逗号括起来的数据(用双引号引起来)(如下例所示),那么导入如何处理呢? 我们如何跟踪某些行是否有不良数据,哪些导入会跳过?(导入会跳过不可导入的行) 这是带有标题的示例CSV: 和

  • 问题内容: 我想将csv文件导入到mysql中。 http://www.tech- recipes.com/rx/2345/import_csv_file_direct_into_mysql/ 但是csv中的列名称与数据库表中的列名称不同,我该怎么办?我想以编程方式来做。 问题答案: 您可以创建一个脚本来解析您的csv文件并将数据放入db。 就像是:

  • 本文向大家介绍R导入.csv文件,包括了R导入.csv文件的使用技巧和注意事项,需要的朋友参考一下 示例 使用base R导入 可以使用read.csv来包装逗号分隔的值文件(CSV),该文件可以包装read.table,但可用于sep = ","将分隔符设置为逗号。 用户友好选项file.choose允许浏览目录: 笔记 与不同read.table,read.csv默认为header = TRU

  • 问题内容: 更新 在我发布此问题之后的第二秒,由于对结果查询的语法突出显示,我看到了出了什么问题:该字符串未以闭合斜线开头。现在我将其更改为: 但是,这提出了一个新问题:为什么PDO对象没有为此向我吐出错误?手动执行查询肯定会返回一个错误,指出没有名为的字段,最后是逗号。为什么我没有收到任何错误?有任何想法吗? PS:关于解决我的问题的SO语法突出显示方面有什么想法吗?:-) 我将原始问题留作参考

  • 问题内容: 我正在做“elasticsearch入门”教程。不幸的是,本教程没有介绍将数据库导入Elasticsearch的第一步。 我用谷歌搜索找到了解决方案,但不幸的是它无法正常工作。这是我要实现的目标和拥有的目标: 我有一个要导入的数据文件(简化了) 我想使用导入。经过互联网研究后,我得到以下配置: 我在指定文档类型时遇到了麻烦,因此一旦导入数据,便导航到http:// localhost: