将netflix数据导入到mysql

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Text.RegularExpressions;
using MySql.Data.MySqlClient;

namespace DataFromAnywhereToMysql
{
    class Program
    {
        private string ConnStr;
        private MySqlConnection Conn;
        private string Forder;
        public void SetConnStr(string str)
        {
            ConnStr = str;
            //"Database=testcsharp;Data Source=localhost;port=3306;User Id=root;Password=jilichuan;charset=utf8";
        }
        private void SetConn(string s)
        {
            Conn = new MySqlConnection(s);
        }
        public void Init(string connstr,string ForderString)
        {
            SetConnStr(connstr);
            SetConn(ConnStr);
            SetForder(ForderString);
            
        }
        public void SetForder(string str)
        {
            Forder = str;
        }
        public void excute()
        {
            Conn.Open();
            MySqlCommand Comm = new MySqlCommand();
            Comm.Connection = Conn;
            Comm.CommandText = "create table traindata(rateID int not null auto_increment primary key,movieID int, userID int,rate int,rateTime date)";
            Comm.ExecuteNonQuery();
            string[] Files = Directory.GetFiles(Forder);
            int FilesCount = Files.Length;
            for (int i = 0; i < FilesCount; i++)
            {
                FileStream FStream = new FileStream(Files[i], FileMode.Open, FileAccess.Read);
                StreamReader sr = new StreamReader(FStream);
                string record = sr.ReadLine();
                string[] movieID = Regex.Split(record, ":");
                while (record != null)
                {
                    record = sr.ReadLine();
                    if (record == null)
                        break;
                    string[] s = Regex.Split(record, ",");
                    Comm.CommandText = "INSERT traindata(movieID,userID,rate,rateTime) values (" + movieID[0] + "," + s[0] + "," + s[1] + ",\'" + s[2] + "\');";
                    Comm.ExecuteNonQuery();
                }
            }


 
        }
        static void Main(string[] args)
        {
            Program a = new Program();

           a.Init("Database=testcsharp;Data Source=localhost;port=3306;User Id=root;Password=jilichuan;charset=utf8",@"E:\快盘\Datasets\nf_prize_dataset\download\training_set\training_set");
           a.excute();

        }

    }
}

刚才把netflix的数据倒进了数据库,遇到一些编程问题,总结在这里

1,关于C#的文件操作

    IO可分为两种,Reader和Stream,不论java和C#都是这样,Reader是对字符进行操作,Stream是对字节流进行操作。

    本文代码中先由文件路径生成FileStream,就是形成文件字节流,但是字节流只能读字节,很不方便,所以又转化为StreamReader,这个类可以由Stream类型的对象生成。现在我就是用StreamReader对字符进行操作。

2,关于C#使用MySQL

    我是从http://cdn.mysql.com/Downloads/Connector-Net/mysql-connector-net-5.0.8.1-noinstall.zip#mirrors  里面下载mysql-connector-net-5.0.8.1-noinstall.zip,解压后把其中的MySql.Data.dll放到工程文件,然后在工程里把它引用进来。

 后面对MySql的操作都是用这个文件的API来的,它里面有docs,可以参考。

3,获取文件夹下的所有文件

   using system.IO.Text;

   string[] Files = Directory.GetFiles(Forder);

4,mysql操作

   对于建表

   "create table traindata(rateID int not null auto_increment primary key,movieID int, userID int,rate int,rateTime date)"

    类型写在名字后面,主键是primary key。

    插入操作:

    "INSERT traindata(movieID,userID,rate,rateTime) values (" + movieID[0] + "," + s[0] + "," + s[1] + ",\'" + s[2] + "\');"

原文地址:https://www.cnblogs.com/jilichuan/p/2832995.html