-
2021-01-16 14:12:55
我正在尝试添加一项功能,允许wvb应用的用户使用CSV文件批量上传数据 - 除非数据在实际字段中包含逗号,否则所有工作都很好。
有很多关于这方面的帖子,我已经阅读了很多关于解决它的方法,主要是将逗号用双引号括起来,但我无法弄清楚如何为我的代码执行此操作。
最终,我不能依赖用户在输入时为我执行此操作,因此我需要将其作为上传过程的一部分,然后才能触及数据库 - 我尝试将制表符用作备用分隔符,但Excel似乎很不一致处理标签分离,所以我排除了。
(sanitiseData是我在整个网站中用来清理所有用户输入数据的函数)
$handle = fopen($file_path, 'r');
$row_count=0;
while (($data = fgetcsv($handle, 0, ',')) !== FALSE) {
if ($row_count==0) {
$row_count++;
} else {
$row_count++;
$works_id = sanitiseData($data[0]);
$title = sanitiseData($data[1]);
$first_name = sanitiseData($data[2]);
//Use data to insert into db
$sql = mysql_query("INSERT INTO csv_employee_personal (id,works_id,title,first_name) VALUES ('','$works_id','$title','$first_name')");
}
}
//delete csv file
unlink($file_path);
更多相关内容 -
CSV文件的转义处理
2020-12-23 02:13:20原文:http://blog.csdn.net/maqingli20/article/details/7095132------------------------------------------------------------------------------------CSV文件是一种适合程序格式化输出数据的文件格式。...原文:http://blog.csdn.net/maqingli20/article/details/7095132
------------------------------------------------------------------------------------
CSV文件是一种适合程序格式化输出数据的文件格式。它使用英文逗号作为列分隔符,文件可以直接用Excel打开。CSV的规则简单,便于程序输出;Excel对CSV的兼容性使得我们可以非常轻松的使用Excel提供的所有强大功能。
唯一需要注意的地方就是CSV是使用英文逗号作为列分隔符的,所以当你输出的文本中含有英文逗号时就会被CSV认为是列分隔符,从而使得文件的现实格式与预想中的不同。因此,我们需要对内容进行转义。
网上可以得到的关于CSV的转义大致可以总结为:
1. 如果一个单元内含有逗号,那么用半角双引号将内容包含,其中的逗号将不被识别为列分隔符;
2. 如果原内容中出现了半角双引号,便是用两个半角双引号转义。
但是在实际操作中,就会发现如果某个单元内出现多个逗号,双引号,我们的规则便不对了。例如:
test,ma, "ma, ""go"", ""go"",""go"""
我们希望的输出格式是三列,但是Excel会显示为六列。我们的转义字符失效了。
test
ma
"ma
""go""
""go""
""go"""
之所以如此,通过我的分析,我认为CSV将每个逗号之间的内容作为首要参考标准。如果用逗号作分隔是可行的,那么Excel将不会做任何更多的处理。
看一个更简单的例子:
test,ma, "woshima, sldkl",
我们希望将其显示为三列,但是结果却是四列:
test
ma
"woshima
sldkl"
由此可见,网上流传的转移规则并不完全。其根本原因在于,CSV只是一个技术规范,不同的程序对其有不同的支持;而且CSV本身的规范也是相当繁琐。如果希望用程序去实现这样的规范,那么CSV的简单性的优势将不复存在。
好了,说到这里,我们应该怎么做呢? 我个人认为,最好的办法就是规定一个特殊的字符串作为英文逗号的转义字符。
这样就一了百了。
-
CSV文件的转义处理 | 学步园
2020-12-23 02:13:30CSV文件是一种适合程序格式化输出数据的文件格式。它使用英文逗号作为列分隔符,文件可以直接用Excel打开。CSV的规则简单,便于程序输出;Excel对CSV的兼容性使得我们可以非常轻松的使用Excel提供的所有强大功能。...CSV文件是一种适合程序格式化输出数据的文件格式。它使用英文逗号作为列分隔符,文件可以直接用Excel打开。CSV的规则简单,便于程序输出;Excel对CSV的兼容性使得我们可以非常轻松的使用Excel提供的所有强大功能。
唯一需要注意的地方就是CSV是使用英文逗号作为列分隔符的,所以当你输出的文本中含有英文逗号时就会被CSV认为是列分隔符,从而使得文件的现实格式与预想中的不同。因此,我们需要对内容进行转义。
网上可以得到的关于CSV的转义大致可以总结为:
1. 如果一个单元内含有逗号,那么用半角双引号将内容包含,其中的逗号将不被识别为列分隔符;
2. 如果原内容中出现了半角双引号,便是用两个半角双引号转义。
但是在实际操作中,就会发现如果某个单元内出现多个逗号,双引号,我们的规则便不对了。例如:
test,ma, "ma, ""go"", ""go"",""go"""
我们希望的输出格式是三列,但是Excel会显示为六列。我们的转义字符失效了。
test
ma
"ma
""go""
""go""
""go"""
之所以如此,通过我的分析,我认为CSV将每个逗号之间的内容作为首要参考标准。如果用逗号作分隔是可行的,那么Excel将不会做任何更多的处理。
看一个更简单的例子:
test,ma, "woshima, sldkl",
我们希望将其显示为三列,但是结果却是四列:
test
ma
"woshima
sldkl"
由此可见,网上流传的转移规则并不完全。其根本原因在于,CSV只是一个技术规范,不同的程序对其有不同的支持;而且CSV本身的规范也是相当繁琐(http://zh.wikipedia.org/zh-cn/CSV )。如果希望用程序去实现这样的规范,那么CSV的简单性的优势将不复存在。
好了,说到这里,我们应该怎么做呢? 我个人认为,最好的办法就是规定一个特殊的字符串作为英文逗号的转义字符。
这样就一了百了。
-
如何为CSV文件转义逗号
2021-01-13 18:32:37{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云文件存储NAS是一个可共享访问,弹性扩展,高可靠,高性能的分布式文件系统。...{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云文件存储NAS是一个可共享访问,弹性扩展,高可靠,高性能的分布式文件系统。广泛应用于容器存储、大数据分析、Web 服务和内容管理、应用程序开发和测试、媒体和娱乐工作流程、数据库备份。支持冷热数据分级存储,平均有效存储成本可低至 0.19元/月GB","link1":"https://www.aliyun.com/product/nas","link":"https://www.aliyun.com/product/nas","icon":"https://img.alicdn.com/tfs/TB1SisTRFXXXXbEXpXXXXXXXXXX-128-128.png","btn2":"折扣套餐","tip":"高性价比NAS新品上线,容量型NAS限时99元起! 立即查看","btn1":"立即开通","link2":"https://www.aliyun.com/product/nas","title":"文件存储 NAS"}],"search":[{"txt":"NAS新手入门","link":"https://m.aliyun.com/markets/aliyun/nas_edu01"},{"txt":"产品价格","link":"https://www.aliyun.com/price/product?spm=5176.149973.776685.6.ID90rH#/nas/detail"},{"txt":"最佳实践","link":"https://help.aliyun.com/document_detail/54998.html"},{"txt":"常见问题","link":"https://help.aliyun.com/knowledge_list/42175.html?spm=5176.59209.972911.4.3f6d3f62SVIECT"}],"countinfo":{"search":{"length_pc":0,"length":0},"card":{"length_pc":0,"length":0}},"simplifiedDisplay":"newEdition","newCard":[{"ifIcon":"icon","link":"https://img.alicdn.com/tfs/TB1XY8hGYr1gK0jSZFDXXb9yVXa-1740-328.png","icon":"nas","title":"文件存储 NAS","contentLink":"https://www.aliyun.com/product/nas?spm=5176.10695662.776724.1.27543d3eTvR5Bi","des":"阿里云文件存储(Network Attached Storage)是面向阿里云ECS、HPC和Docker的共享文件存储服务,支持linux和window客户端多种标准文件访问协议,无限容量及性能扩展、单一命名空间,企业级安全防护。","btn1":"立即开通","link1":"https://www.aliyun.com/product/nas?spm=5176.10695662.776724.2.27543d3eTvR5Bi","btn2":"产品文档","link2":"https://help.aliyun.com/product/27516.html?spm=5176.cnnas.0.0.42216689Kvc7ZO","link3":"https://nasnext.console.aliyun.com/overview?spm=5176.cnnas.0.0.42216689Kvc7ZO","btn3":"管理控制台","infoGroup":[{"infoName":"产品入门","infoContent":{"firstContentName":"NAS使用流程","firstContentLink":"https://help.aliyun.com/document_detail/148430.html?spm=a2c4g.11174283.6.564.b9c74da2J1uIZi","lastContentName":"挂载NAS到系统","lastContentLink":"https://help.aliyun.com/document_detail/27526.html?spm=a2c4g.11186623.6.566.1872495fTbU32y"}},{"infoName":"最新动态","infoContent":{"firstContentName":"极速型性能提升340%","firstContentLink":"https://yq.aliyun.com/articles/761833?spm=5176.cnnas.0.0.25216689DjruaG","lastContentName":"NAS低频型发布","lastContentLink":"https://yq.aliyun.com/articles/762197?spm=5176.cnnas.0.0.25216689DjruaG"}}]}]}
{"$env":{"JSON":{}},"$page":{"env":"production"},"$context":{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云文件存储NAS是一个可共享访问,弹性扩展,高可靠,高性能的分布式文件系统。广泛应用于容器存储、大数据分析、Web 服务和内容管理、应用程序开发和测试、媒体和娱乐工作流程、数据库备份。支持冷热数据分级存储,平均有效存储成本可低至 0.19元/月GB","link1":"https://www.aliyun.com/product/nas","link":"https://www.aliyun.com/product/nas","icon":"https://img.alicdn.com/tfs/TB1SisTRFXXXXbEXpXXXXXXXXXX-128-128.png","btn2":"折扣套餐","tip":"高性价比NAS新品上线,容量型NAS限时99元起! 立即查看","btn1":"立即开通","link2":"https://www.aliyun.com/product/nas","title":"文件存储 NAS"}],"search":[{"txt":"NAS新手入门","link":"https://m.aliyun.com/markets/aliyun/nas_edu01"},{"txt":"产品价格","link":"https://www.aliyun.com/price/product?spm=5176.149973.776685.6.ID90rH#/nas/detail"},{"txt":"最佳实践","link":"https://help.aliyun.com/document_detail/54998.html"},{"txt":"常见问题","link":"https://help.aliyun.com/knowledge_list/42175.html?spm=5176.59209.972911.4.3f6d3f62SVIECT"}],"countinfo":{"search":{"length_pc":0,"length":0},"card":{"length_pc":0,"length":0}},"simplifiedDisplay":"newEdition","newCard":[{"ifIcon":"icon","link":"https://img.alicdn.com/tfs/TB1XY8hGYr1gK0jSZFDXXb9yVXa-1740-328.png","icon":"nas","title":"文件存储 NAS","contentLink":"https://www.aliyun.com/product/nas?spm=5176.10695662.776724.1.27543d3eTvR5Bi","des":"阿里云文件存储(Network Attached Storage)是面向阿里云ECS、HPC和Docker的共享文件存储服务,支持linux和window客户端多种标准文件访问协议,无限容量及性能扩展、单一命名空间,企业级安全防护。","btn1":"立即开通","link1":"https://www.aliyun.com/product/nas?spm=5176.10695662.776724.2.27543d3eTvR5Bi","btn2":"产品文档","link2":"https://help.aliyun.com/product/27516.html?spm=5176.cnnas.0.0.42216689Kvc7ZO","link3":"https://nasnext.console.aliyun.com/overview?spm=5176.cnnas.0.0.42216689Kvc7ZO","btn3":"管理控制台","infoGroup":[{"infoName":"产品入门","infoContent":{"firstContentName":"NAS使用流程","firstContentLink":"https://help.aliyun.com/document_detail/148430.html?spm=a2c4g.11174283.6.564.b9c74da2J1uIZi","lastContentName":"挂载NAS到系统","lastContentLink":"https://help.aliyun.com/document_detail/27526.html?spm=a2c4g.11186623.6.566.1872495fTbU32y"}},{"infoName":"最新动态","infoContent":{"firstContentName":"极速型性能提升340%","firstContentLink":"https://yq.aliyun.com/articles/761833?spm=5176.cnnas.0.0.25216689DjruaG","lastContentName":"NAS低频型发布","lastContentLink":"https://yq.aliyun.com/articles/762197?spm=5176.cnnas.0.0.25216689DjruaG"}}]}]}}
-
写入csv文件时转义分号字符
2020-12-31 10:18:53所有其他单元格内容都会进入并在Excel中正确显示 .使用Windows下的西里尔语言环境中的各种版本的Excel和ODBC CSV解析器进行检查 ./*** This function escapes single CSV value if it contains ... -
如何为CSV文件同时转义逗号和双引号?
2020-12-23 02:13:19以下是两个例子:❐ApacheCommons Lang转义为CSVString escaped = StringEscapeUtils.escapeCsv("I said \"Hey, I am 5'10\".\""); // I said "Hey, I am 5'10"."System.out.println(escaped); // "I said ""Hey, I... -
java-如何在CSV文件中同时转义逗号和双引号?
2020-12-23 02:13:29这是两个示例:❐Apache Commons LangApache Commons Lang包含一个特殊的类,用于转义或不转义字符串(CSV,EcmaScript,HTML,Java,Json,XML):FileInputStream fis = new FileInputStream("awesomefile.csv");... -
Mysql load data infile 导入.csv文件时转义问题
2021-11-26 13:54:41在用sql loader做csv文件导入mysql时,偶然发现日志报了Row xxx doesn't contain data for all columns。mybatis xml sql语句如下: <select id="importFile"> load data infile #{path} //csv文件的绝对... -
利用Python如何将数据写到CSV文件中
2020-09-20 10:12:29在数据分析中经常需要从csv格式的文件中存取数据以及将数据写书到csv文件中。下面这篇文章主要给大家介绍了关于利用Python如何将数据写到CSV文件中的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考... -
CSV文件内容中的换行符等常见特殊字符处理过程记录
2020-12-31 10:18:53因为导入CSV格式数据到hive的时候,会出现错行错列的现象,经过排查,主要原因是CSV文件内容中含有换行符(\r\n,\n,\r)和转义符(\)导致。正常我们使用一下建表语句默认支持CSV文件解析(关键设置:ROW FORMAT SERDE ... -
CSV文件中的逗号、双引号的转义。读写带特殊字符的csv文件。
2020-08-17 20:15:09如果字段中有逗号(,),该字段使用双引号(")括起来; 如果该字段中有双引号,该双引号前要再加一个双引号,然后把该字段使用双引号括起来。 字段处理前 字段处理后 abc,d2 “abc,d2” ...... -
CSV文件如何同时转义逗号和双引号?
2020-12-23 02:13:34小编典典有几个库。这是两个示例:阿帕奇共享郎包括一类特殊的逃避或UNESCAPE字符串(CSV,EcmaScript的,HTML,Java和JSON,...转义 为CSVString escaped = StringEscapeUtils.escapeCsv("I said \"Hey, I am 5'10\... -
如何转义逗号和双引号同时为CSV文件?
2021-07-16 16:35:40I am writing a Java app to export data from Oracle to csv fileUnfortunately the content of data may quite tricky. Still comma is the deliminator, but some data on a row could be like this:ID FN LN ... -
C# 数字文本写入数据到excel文件或csv文件禁止转义的解决方法
2019-06-24 17:21:08写入csv 文件时在禁止转义的列前面加一个Tab符号,也就是在前面拼接 \t 写入excel文件时在禁止转义的列前面加一个英文半角单引号,也就是在前面拼接 ' 符号 ... -
如何为CSV文件转义逗号?
2017-01-23 15:22:32<p>30,48cm is single term and CSV file will separate this as 30 and 48cm. Issues would be fixed if it was like: <pre><code>247,"30,48cm","Venti... </code></pre> <p>But when i add slashes it will ... -
python 读取.csv文件数据到数组(矩阵)的实例讲解
2020-12-24 19:33:08利用numpy库 (缺点:有缺失值就无法读取) 读: import numpy my_matrix = numpy.loadtxt(open("1.csv","rb"),delimiter=",",skiprows=0)...原因是文件路径名中含有转义字符,将路径中的\换成\即可。 利用pandas库 读 -
CSV文件对逗号和引号字符的转义处理,使用EXCEL打开时在一个单元格内
2021-04-20 14:36:24CSV文件本质是一种用逗号和(回车)换行符分割的文本文件,可以直接用Excel打开 * CSV (逗号分隔值文件格式)Comma-Separated Values 【每一行的分割符必须是英文的逗号,不能是中文的逗号】 * 逗号分隔值(Comma-... -
Java 文件下载 csv文件导出特殊字符转义
2018-01-10 16:11:33将从数据库查出的数据以生成csv文件的方式下载下来(导出)。 实现方案 最开始的方法是: 将从数据库中查出的数据拼成符合csv文件格式的字符串,然后将字符串转为输入流,最后返回InputStreamResource,达到... -
[原创]导出CSV文件,特殊字符处理。
2021-02-28 12:42:12CSV文件格式1、CSV文件默认以英文逗号(,)做为列分隔符,换行符(\n)作为行分隔符。2、CSV默认认为由""括起来的内容是一个栏位,这时不管栏位内容里有除"之外字符的任何字符都可以按原来形式引用。3、若字段内容里含有... -
(PHP)海量数据输出CSV文件时由于特殊字符引起的CSV文件格式异常
2021-03-24 13:57:15http://blog.csdn.net/thefirstwind/archive/2008/05/09/2422715.aspx 很多人通过拼字符串,直接使用fwrite来写CSV文件,这样固然没有错,但是如果遇到允许引号和逗号出现的情况,恐怕就显得非常麻烦了。 例如: $... -
import-csv2:用于读取CSV文件的PowerShell模块
2021-03-26 19:03:42这是用于导入CSV文件的PowerShell模块。 与内置的Import-Csv cmdlet相比,它具有以下优点: 灵活的解析选项:指定定界符/转义字符/引号字符,允许注释,跳过空行,忽略引号和修剪空格。 各种输出对象格式: ... -
Java 读取CSV文件的时候碰到 转义字符 的解决方案
2019-05-10 10:35:00假设 在读CSV, 分割符为`, 有个字段 name, 在某一行它的存在 该分隔符, CSV文件会在保存的时候在该字符前添加转移 "\`", 如果我们利用CSV 专门的读取工具自然没问题;但是如果我们仅仅通过 字符串split方法切割的... -
Python文件读取的3种方法及路径转义
2020-12-24 07:05:371.文件的读取和显示 方法1: 复制代码 代码如下: f=open(r’G:\2.txt’) print f.read() f.close() 方法2: 复制代码 代码如下: try: t=open(r’G:\2.txt’) print t.read() finally: if t: t.... -
CSV格式特殊字符转义处理
2018-04-22 22:14:54CSV是逗号分隔值(comama separated value)的缩写,也有一说是字符分隔值。因为分隔符也可以是其他字符。 当csv某个字段中包含换行(CRLF)、双...当csv某个字段用双引号括起来且字段中内容中还包含双引号时,必须在该... -
如何转义CSV文件中的逗号
2020-12-21 15:05:17CSV全称是:Comma Separated ...使用逗号做分隔符的CSV文件有一个好处:你可以直接用Excel打开。如果使用其它分隔符,比如“|”,你必须告诉Excel该文件使用“|”作分隔符,Excel才能把它导入进来。前几天,proje... -
出力CSV文件将逗号转义
2019-02-13 09:20:24if (XXXXX.Contains(",")) { //将逗号转义 XXXXX= "\"" + XXXXX + "\""; }... -
Java写CSV文件双引号逗号不转义
2020-09-01 16:59:24CSV文件默认逗号换单元格,现想将一对字符串写入CSV的同一单元格中。字符串内容是json格式 {“0”:1000,“100”:59,“22”:12} 这里既有双引号也有逗号。不让逗号转义直接将内容加上双引号包含起来即可。 解决方法...