我正在寻求帮助,以便使用批处理将 .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