javascript 读取csv文件

javascript 读取csv文件,第1张

js读取CSV格式数据,参考如下:

<script type="text/javascript">     

// This will parse a delimited string into an array of  

// arrays. The default delimiter is the comma, but this  

// can be overriden in the second argument.  

function CSVToArray( strData, strDelimiter ){  

// Check to see if the delimiter is defined. If not,  

// then default to comma.  

strDelimiter = (strDelimiter || ",")  

   

// Create a regular expression to parse the CSV values.  

var objPattern = new RegExp(  

(  

// Delimiters.  

"(\\" + strDelimiter + "|\\r?\\n|\\r|^)" +  

   

// Quoted fields.  

"(?:\"([^\"]*(?:\"\"[^\"]*)*)\"|" +  

   

// Standard fields.  

"([^\"\\" + strDelimiter + "\\r\\n]*))"  

),  

"gi"  

)  

   

   

// Create an array to hold our data. Give the array  

// a default empty first row.  

var arrData = [[]]  

   

// Create an array to hold our individual pattern  

// matching groups.  

var arrMatches = null  

   

   

// Keep looping over the regular expression matches  

// until we can no longer find a match.  

while (arrMatches = objPattern.exec( strData )){  

   

// Get the delimiter that was found.  

var strMatchedDelimiter = arrMatches[ 1 ]  

   

// Check to see if the given delimiter has a length  

// (is not the start of string) and if it matches  

// field delimiter. If id does not, then we know  

// that this delimiter is a row delimiter.  

if (  

strMatchedDelimiter.length &&  

(strMatchedDelimiter != strDelimiter)  

){  

   

// Since we have reached a new row of data,  

// add an empty row to our data array.  

arrData.push( [] )  

   

}  

   

   

// Now that we have our delimiter out of the way,  

// let's check to see which kind of value we  

// captured (quoted or unquoted).  

if (arrMatches[ 2 ]){  

   

// We found a quoted value. When we capture  

// this value, unescape any double quotes.  

var strMatchedValue = arrMatches[ 2 ].replace(  

new RegExp( "\"\"", "g" ),  

"\""  

)  

   

} else {  

   

// We found a non-quoted value.  

var strMatchedValue = arrMatches[ 3 ]  

   

}  

   

   

// Now that we have our value string, let's add  

// it to the data array.  

arrData[ arrData.length - 1 ].push( strMatchedValue )  

}  

   

// Return the parsed data.  

return( arrData )  

}  

   

</script>

前台可以通过JS过滤文件类型,如果是CSV,允许上传,如果不是,给出提示。 后台先上传文件,如果成功,记录成功数量,失败记录失败数量。(这里记住要先上传在解析, 外在因素可能导致多种失败的情况。) 具体信息可以让他下载后查看。

第一种方式: 先入库后使用我们假设现在有有一个CSV文件Contacts.CSV 文件的内容是联系人信息。首先我们需要在数据库中建一个对应的表TC_Contacts,然后利用下面的SQL代码将CSV文件导入到这个表里面:INSERT INTO TC_Contacts23 SELECT * FROM4 OPENROWSET('MSDASQL',5 'Driver={Microsoft Text Driver (*.txt*.csv)}6 DEFAULTDIR=D:\DataExtensions=CSV',7 'SELECT * FROM "Contacts.CSV"')其中:1.TC_Contacts为目标表的名字。对于目标表,要求对应的字段能够接收CSV文件中对象列的数据,这里特别需要注意的是字符串的长度,日期时间格式和整数浮点数的处理由于CSV文件中实际上都是字符串,那么在导入的过程中就有可能出现不能转换的情况。例如:日期格式不符合数据库的要求,或者字符串不能转化为整数或者浮点数等。对于目标表,字段数目和顺序可以和CSV文件中的不一样。其实在整个的SQL语句中只有OPENROWSET是用来处理CSV文件的。其它部分都是普通的T-SQL,在T-SQL中能做的事情在这里都可以做。例如:如果你的TC_Contacts比CSV多一个字段gid uniqueidentifier ,那么就可以把SQL语句修改为:1 INSERT INTO TC_Contacts2 SELECT newid(),* FROM3 OPENROWSET('MSDASQL',4 'Driver={Microsoft Text Driver (*.txt*.csv)}5 DEFAULTDIR=D:\DataExtensions=CSV',6 'SELECT * FROM "Contacts.CSV"')这样就可以给每条记录增加一个id了。2.SQL代码中的DefaultDir 也就是D:\Data 是指存在于SQL Server服务器上的位置,而不是在提交该代码的客户机上。这一点对于初次接触的人来说很关键。SQL Server如果在服务器上找不到文件会报告错误。但是这个错误的消息不是那么直接了当。3.有的CSV文件中第一行不是列标题,而是和其它行一样是普通的数据行。这个时候就需要一个Schema.ini来定义CSV文件的格式。Schema.ini的格式我会专门写一篇来介绍一下。在Schema.ini文件中会指定CSV文件的一些特性,这样有助于Microsoft Text Driver来处理数据.第二种:直接使用通过OdbcConnection可以创建一个链接到csv文件的链接,链接字符串的格式是:"Driver={Microsoft Text Driver (*.txt*.csv)}Dbq="+cvs文件的文件夹路径+" Extensions=asc,csv,tab,txtPersist Security Info=False"创建连接之后就可以使用DataAdapter等存取csv文件了。public DataSet getdatasetfromcsv(string filepath, string filename){string strconn = @"driver={microsoft text driver (*.txt*.csv)}dbq="strconn += filepath//filepath, for example: c:\strconn += "extensions=asc,csv,tab,txt" OdbcConnection objconn = new OdbcConnection(strconn)DataSet dscsv = new DataSet()try{string strsql = "select * from " + filename//filename, for example: 1.csvOdbcDataAdapter odbccsvdataadapter = new OdbcDataAdapter(strsql,objconn)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6629452.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-25
下一篇 2023-03-25

发表评论

登录后才能评论

评论列表(0条)

保存