zoukankan      html  css  js  c++  java
  • 将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] + "\');"

  • 相关阅读:
    ReactNative--Flexbox布局
    ReactNative--资源,文章,等等
    ReactNative--坑--no bundle URL present
    ReactNative--StyleSheet样式表
    ReactNative--项目创建及结构分析
    ReactNative--ReactNative简介
    10-4路径文字排版 这一节完全不明白
    10-3区域文字排版
    10-2使用字符调板
    10-1使用文字工具
  • 原文地址:https://www.cnblogs.com/jilichuan/p/2832995.html
Copyright © 2011-2022 走看看