使用批处理将 csv 文件加载到 mysql 中?

使用批处理将 csv 文件加载到 mysql 中?

我正在寻求帮助,以便使用批处理将 .csv 文件加载到 MySQL 服务器中,并且我有几个基本问​​题。

问题:

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

2)从 Excel 加载 CSV,然后带有逗号的数据将被括在“”(双引号)中[如下例所示],那么导入如何处理这个问题?

以下是带标题的 CSV 示例:

name,id,Subject,ExamDate,Mark,Description
Prabhat,1,Math,2/10/2013,25,Test data for prabhat.
Murari,2,Science,2/11/2013,24,"Test data for his's test, where we can test 2nd ROW, Test."
sanjay,3,Science,,25,Test Only.

导入所用的SQL语句:

load data local infile "c:\\eqa\\project\\input.csv" into table request character set latin1 fields terminated by',' lines terminated by'\n' ignore 1 lines

我怎样才能做到这一点,可能吗?

答案1

由于您正在load data local infile使用将数据加载到表中使用 MySQL,有一个简单的解决方案作为此功能的一部分提供,它将帮助您解决此问题。

您只需确保将ENCLOSED BY '"'子句作为FIELD您正在使用的 MySQL 语法中子句的一部分包含其中 — 下面是一个示例。

load data local infile "c:\\eqa\\project\\input.csv" 
into table request 
character set latin1 
fields terminated by','
ENCLOSED BY '"'
lines terminated by'\n' 
ignore 1 lines

这告诉 MySQL 输入文件具有以下字段值:用双引号括起来被逗号隔开— 双引号之间的所有字符都将被导入。


更多资源

  • 将数据加载到表中
  • LOAD DATA INFILE 语法
    • LOAD DATA INFILE可用于读取从外部源获得的文件。例如,许多程序可以以逗号分隔值 (CSV) 格式导出数据,这样行中的字段用逗号分隔并用双引号括起来,首行是列名。如果此类文件中的行以回车符/换行符结束,则此处显示的语句说明了加载文件时要使用的字段和行处理选项:

      LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
        FIELDS TERMINATED BY ',' ENCLOSED BY '"'
        LINES TERMINATED BY '\r\n'
        IGNORE 1 LINES;
      

      对于输入,ENCLOSED BY如果存在该字符,则会从字段值的末尾删除该字符。(无论是否 OPTIONALLY指定,这都是正确的;OPTIONALLY对输入解释没有影响。)该ENCLOSED BY字符前面出现的字符ESCAPED BY被解释为当前字段值的一部分。

      如果字段以ENCLOSED BY字符开头,则仅当该字符后面跟着字段或行TERMINATED BY序列时,该字符的实例才会被识别为终止字段值。为了避免歧义,ENCLOSED BY字段值中该字符的出现次数可以重复,并被解释为该字符的单个实例。例如,如果ENCLOSED BY '"'指定了,则引号的处理方式如下:

      "The ""BIG"" boss"  -> The "BIG" boss
      The "BIG" boss      -> The "BIG" boss
      The ""BIG"" boss    -> The ""BIG"" boss
      

      来源

相关内容