首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在将csv导入mysql表时消除内部值中的双引号

如何在将csv导入mysql表时消除内部值中的双引号
EN

Stack Overflow用户
提问于 2020-03-15 02:01:39
回答 2查看 482关注 0票数 1

我使用这里的代码将csv导入到mysql表中。它工作得很好,并且用括号去掉了所有的双引号。

我的csv值类似于"text text",123,"text text",456,"text text“

代码语言:javascript
运行
复制
LOAD DATA LOCAL INFILE "'.$file.'"
INTO TABLE '.$table.'
FIELDS TERMINATED by \',\'
OPTIONALLY ENCLOSED BY \'"\'
ESCAPED BY \'"\'
LINES TERMINATED BY \'\r\n\'
(location,rating,board etc)

我刚刚发现一些值有双引号,在主双引号内。

如此处第3列-“文本文本”,123,“文本”特殊“文本”,456,“文本文本”

它导入为- text text,123,text "Special text,456,text text

我已经尝试了如下所示的转义方式,但无法让它删除内部的双引号。它是在wordpress环境中运行的,但是上面的代码可以工作(除了我的问题)。

任何想法、帮助或想法都是很棒的。

EN

回答 2

Stack Overflow用户

发布于 2020-03-15 03:55:23

尝试转义双引号,如下所示:

代码语言:javascript
运行
复制
LOAD DATA LOCAL INFILE "'.$file.'"
INTO TABLE '.$table.'
FIELDS TERMINATED by \',\'
OPTIONALLY ENCLOSED BY \'"\'
ESCAPED BY \'\'
LINES TERMINATED BY \'\r\n\'
(location,rating,board etc)
票数 0
EN

Stack Overflow用户

发布于 2020-03-15 04:08:42

您向我们展示了CSV文件中的这一行

代码语言:javascript
运行
复制
"text text",123,"text "Special" text",456,"text text"

不幸的是,这不是格式良好的CSV。列值中的"字符必须转义。因此,要使这一行格式良好,它必须看起来像其中的一个。

代码语言:javascript
运行
复制
"text text",123,"text ""Special"" text",456,"text text"
"text text",123,"text \"Special\" text",456,"text text"

如果这是我的项目,我会回到我得到这个糟糕的CSV文件的地方,并尝试获得一个好的文件。

如果这是不可能的,并且您的文件没有在列值中嵌入任何逗号,您可以尝试使用这个load命令,去掉OPTIONALLY ENCLOSED BY子句。

代码语言:javascript
运行
复制
LOAD DATA LOCAL INFILE "'.$file.'"
INTO TABLE '.$table.'
FIELDS TERMINATED by \',\'
ESCAPED BY \'"\'
LINES TERMINATED BY \'\r\n\'
(location,rating,board etc)

然后,您将获得一些以"字符开头和结尾的字符串值。您可以通过下面这样的查询来清理它

代码语言:javascript
运行
复制
UPDATE table SET field = SUBSTRING(field,2) WHERE field LIKE '"%';
UPDATE table SET field = SUBSTRING(field, 1, LENGTH(field)-1) WHERE field LIKE '%"';

第一个查询去掉了“前导”符号,第二个去掉了尾随符号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60685743

复制
相关文章

相似问题

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