1. 程式人生 > >如何讀取CSV檔案到DataTable中,然後存到資料庫

如何讀取CSV檔案到DataTable中,然後存到資料庫

public void FileToDB()         {             string line = "";//將檔案中的一行資料讀出,賦值給line             int i = 0;//計數檔案中的行數               int linenumber = 0;//檔案中的總行數               string sql = "select top 1 * from 表";//從資料庫讀取某一張表,主要是為了獲取表的結構             DataSet dt = DataSelectMyTest(sql, "table");//執行sql語句,返回DataSet             dt.Clear();//清空資料                 string fileName = @"csv檔案的絕對路徑";                 FileStream fs = new FileStream(fileName, FileMode.Open);                 System.Text.Encoding iso_8859_1 = System.Text.Encoding.GetEncoding("iso-8859-1");//西歐語言裡的iso 8859-1                 StreamReader m_streamReader = new StreamReader(fs, iso_8859_1);                 linenumber = m_streamReader.ReadToEnd().Split('\n').Length;                 //Console.WriteLine("檔案一共有{0}行!",linenumber);                 fs.Seek(0, SeekOrigin.Begin);//迴轉到檔案開頭                                                                                                     DataTable Table = new DataTable("table");                 while (((line = m_streamReader.ReadLine()) != null))                 {

                    i++;                     if (i == 1)//第一行是列名                     {                         string[] str = CutComma(line);//去除列名之間的所有空格                         for (int k = 0; k < str.Length; k++)                         {                             str[k] = CutSpace(str[k]);//去除列名中的空格                                  DataColumn Column = new DataColumn();                             Column.DataType = System.Type.GetType("System.String");                             Column.ColumnName = str[k].ToString();                             Table.Columns.Add(Column);                         }                     }                     if (i <= linenumber - 1 && i > 1)//(檔案的第一行就是列名,檔案結尾多出來一行空白的)                     {                         int i1 = 0;                         string str = "";                         DataRow temprow = Table.NewRow();                         bool flag = true;                         for (int j = 0; j < line.Length; j++)                         {                             if (flag == true)                             {                                 if (line[j] == '\"')                                 {                                     flag = false;                                     continue;                                 }                                 else if (line[j] != ',')                                 {                                     str = str + line[j];                                     if (j == line.Length - 1)                                     {                                         temprow[i1] = str;//最後一列不為空的時候                                     }                                 }                                 else if (line[j] == ',' && line[j - 1] != '\"')                                 {                                     //賦值                                     temprow[i1] = str;                                     str = "";                                     i1 = i1 + 1;                                     if (j == line.Length - 1)                                     {                                         temprow[i1] = str;//最後一列為空的時候                                     }                                 }                             }                             else                             {                                 if (line[j] != '\"')                                 {                                     str = str + line[j];                                 }                                 else                                 {                                     flag = true;                                     //賦值                                     temprow[i1] = str;                                     str = "";                                     i1 = i1 + 1;                                     continue;                                 }                             }                         }                         Table.Rows.Add(temprow);                     }                 }             }

            string strConnection = "資料庫的配置";             SqlConnection conn = new SqlConnection(strConnection);             SqlBulkCopy bcp = new SqlBulkCopy(conn);             conn.Open();             bcp.DestinationTableName = "資料庫中對應的表";             bcp.WriteToServer(dt.Tables["table"]); //把資料寫入到一張表中               conn.Close();             dt.Clear();         }

//程式碼還可以進一步的優化,比如,有可能資料庫中的表結構,和CSV中的並不對應,屆時,就需要自己對列進行一一對應了
//需要注意的是csv檔案的編碼,以及使用那個notepad++開啟檔案,列與列之間怎麼分隔開的
//在資料庫配置之前,需要把之前建立的Table放到dt中名為"table"的表中,

相關推薦

如何讀取CSV檔案DataTable然後資料庫

public void FileToDB()         {             string line = "";//將檔案中的一行資料讀出,賦值給line             int i = 0;//計數檔案中的行數               i

Java讀取csv檔案並將內容插入到資料庫

Java讀取csv檔案, 並使用jdbc將內容插入到資料庫, 插入資料庫的類可以在另一篇文章中檢視, 有一個公共的csv操作jar包,本文未使用 <dependency> <grou

EXCEL開啟csv檔案中文亂碼以及匯入資料庫中文亂碼

1.將csv檔案用notepad++開啟,選擇encoding列表,選擇encode in UTF-8-BOM編碼方式,點集儲存,再次用EXCEL開啟就可以正常顯示 2.將上述的csv檔案匯入SQL中,選址65001(UTF—8)編碼方式,並在高階那一項將帶有中文的那一列的

讀取csv檔案1min k線輸出到csv檔案計算5s10s20s移動平均值

參考: C字串轉換為int,float https://blog.csdn.net/li6727975/article/details/42875641 結構體 http://www.runoob.com/cprogramming/c-structures.htm

20.獲取網路圖片將圖片儲存在檔案快取然後先從快取讀取沒有再從檔案讀取

實現的功能主要是標題,那麼接下來我們就分析,如何一步一步的實現這個功能 第一步:建立imgCache資料夾,在裡面建立如下幾個檔案 1.ImgLoaderCallback:用於重新整理ImageView 2.ImageManager:用於管理快取圖片,比如圖片的讀取,還有

如何用java讀取csv檔案指定行列的資料並將csv資料元素隨機置零後儲存到另一個csv檔案

這個流程可以大致分為兩步驟:1.讀取csv檔案中的資料2.生成隨機數,將csv的資料隨機置零,將新生成的檔案儲存到新的csv中一、首先我們進行第一步:讀取csv中的檔案:讀取函式格式為public static double readin(int row,int col)

改良昨天的指令碼讀取CSV檔案生成散點圖

需要讀取的CSV檔案,資料參考以下表頭順序 讀取成功後生成散點圖檔案 “散點圖.html" 開啟網頁檔案時,同目錄下需要有 echarts.min.js 散點圖效果:   程式碼如下: # -*- coding: utf-8 -*- """ 讀取cs

spark1.6.1讀取csv檔案轉為為DataFrame和使用SQL

一、讀取csv spark2.0才開始原始碼支援CSV,所以1.6版本需要藉助第三方包來實現讀取CSV檔案,有好幾種方法, 1.如果有maven的,到https://spark-packages.org/package/databricks/spark-csv下載對應scala版本的第三方j

Unity3D讀取CSV檔案

轉自  https://www.cnblogs.com/lyh916/p/8588218.html   參考連結: https://www.cnblogs.com/lulianqi/p/6385503.html http://blog.csdn.net/paul342/article/det

python讀txt檔案讀資料然後修改資料再以矩陣形式儲存在檔案

import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # -*- coding: UTF-8 -*- import numpy as np import glob import tensorflow as tf flag=T

Pythonpandas讀取*.csv檔案出現編碼問題

1、問題 在使用Python中pandas讀取csv檔案時,由於檔案編碼格式出現以下問題: Traceback (most recent call last): File "pandas\_libs\parsers.pyx", line 1134, in pandas

Pandas Python讀取CSV檔案的某一列

本人菜鳥一枚,剛剛接觸Python,也不是專門研究Python的,但是在處理資料的時候需要用到,就簡單的記錄一下的自己學習。 1.首先就是讀取csv檔案 address=pd.read_csv("C:/..../檔名",usecols=[2]) #括號中第一個引數是讀取

Win764位下Python 讀取csv檔案(Excel轉化的)並繪製圖表

參考程式碼: 依賴的包: 1.matplot 2.numpy Python 讀取csv檔案(Excel轉化的)並繪製圖表。 程式碼如下: from __future__ import print_function from matplotlib import mla

opencsv方式讀取csv檔案詳解示例

1.opencsv官網:http://opencsv.sourceforge.net/    jar包:opencsv-2.3.jar 2.讀取CSV檔案 package com.szaisino.common.opencsv; import java.io.File

iOS開發讀取csv檔案

首先將csv檔案拖入到工程中 使用下面程式碼讀取檔案: -(void)readCSVData{     NSString *path = [[NSBundlemainBundle] pathForR

R語言 : 讀取csv 檔案 畫基金淨值線

資料檔案 66001.txt 內容格式: date1,jz0,jz1,jz2,jz3,jz4,jz5 2017-09-01,1.0202,1.6531,2.4647,1.1081,NA,2.9068 2017-09-04,1.0134,1.6621,2.4576,1.108

C++讀取CSV檔案並將逗號分隔符檔案分割成N個數組

#include <stdio.h> #include <string.h> // #include <windows.h> #define MAXLINE 256 struct student {     char stuName[10

pd.read_csv無法正常讀取csv檔案顯示UnicodeDecodeError

在mac的python3環境下,用pd.read_csv讀取csv檔案時,一直報錯 UnicodeDecodeError: 'utf-8' codec can't decode byte 0x82 in position 743: invalid start byte 在

shell指令碼檔案重定向讀取.csv檔案輸出SQL Insert語句

檔案重定向常見於指令碼需要讀入檔案和輸出檔案時。這個樣例指令碼兩件事都做了。它讀取.csv 格式的資料檔案,輸出SQL INSERT語句來將資料插入資料庫。 shell指令碼使用命令列引數指定待讀取的.csv檔案。.csv格式用於從電子表格中匯出資料,所以 你可以把資料庫資料放入電子表格中,把電子表