要求:从三个不同服务器中取数,对最近10的历史数据进行去重,写出到文本。

1.读取。

 public static DataTable ExecuteSql(string connectString, string querySqlString)
{
DataTable dt = new DataTable();
using (SqlConnection conn = new SqlConnection(connectString))
{
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = querySqlString;
using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
{
adapter.SelectCommand.CommandTimeout = * ;
adapter.Fill(dt);
return dt;
}
}
}

当然,另外还有一种,定义了一个我要使用的类型,返回List<T>:

 public static List<MarketUrl> GetUrlListFromDataBase(string serverName, string sqlString)
{
List<MarketUrl> list = new List<MarketUrl>();
MarketUrl mu = new MarketUrl();
string connectStr = ConfigurationManager.ConnectionStrings[serverName].ConnectionString;
using (SqlConnection conn = new SqlConnection(connectStr))
{
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = sqlString;
cmd.CommandTimeout = * ;
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
var dr = new MarketUrl()
{
market = reader.GetString(reader.GetOrdinal("MarketCode")),
url = reader.GetString(reader.GetOrdinal("Url"))
};
list.Add(dr);
}
}
return list;
}

2.去重(我的思路是,在取数的时候,对各自的data select 的时候先进行distinct,然后三个data merge到一起时,再次duplicate):

 //colmuns 是distinct的 数组,为columnName
public static DataTable GetDistinctRow(DataTable dt, string[] columns)
{
DataView dv = dt.DefaultView;
DataTable dtDistinct = dv.ToTable(true, columns);
return dtDistinct;
}

3.DataRows ConvertTo DataTable

 //这是个额外用的到操作,先记下
public static DataTable ConvertToDataTable(DataRow[] rows)
{
if (rows == null || rows.Count() < )
return null;
DataTable dtResult = rows[].Table.Clone();
foreach (DataRow r in rows)
{
dtResult.Rows.Add(r.ItemArray);
}
return dtResult;
}

4.写入到文本,因code还涉及到别的一些操作,这里只写最简单部分:

 StringBuilder sb = new StringBuilder();
foreach (DataRow row in dt.Rows)
{
sb.AppendLine(dateString + " " + row[].ToString() + " " + row[].ToString());
}
using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
7 {
using (TextWriter tw = new StreamWriter(fs, Encoding.Default))
{
tw.Write(sb.ToString());
}
}
File.WriteAllText(logPath, "[" + DateTime.UtcNow + "] Successed...\r\n");

数据读取(SQL)与文本写入(fileStream)的更多相关文章

  1. 把读取sql的结果写入到excel文件

    1.利用pandas模块 # encoding: utf-8 import time import pandas as pd import pymysql def getrel(sql): ''' 连 ...

  2. 读取excel数据生成sql脚本

    package com.interact.util; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.b ...

  3. 转: 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

  4. 读取数据表中第m条到第n条的数据,SQL语句怎么写?

    原文:读取数据表中第m条到第n条的数据,SQL语句怎么写? 对于MySQL或者Oracle来说,如果实现从Table 表中取出第 m 条到第 n 条的记录操作,我们需要TOP函数(不是所有的数据库都支 ...

  5. 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

  6. nodejs之流数据读取与写入

    1.(fs.createReadStream)当文件比较大时,建议使用文件流读取,不会出现卡顿现象,demo如下. const fs = require('fs'); //流的方式读取文件 var r ...

  7. Excel导入数据到Sql server 中出错:“文本被截断,或者一个或多个字符在目标代码页中没有匹配项”

    从Excel导入数据到Sql server 时,由于表中的数据有的很长,导入时出现如下错误(如果数据不是很长,255内以内,则不会出现错误): 出错原因: SQL Server的导入导出为了确定数据表 ...

  8. Spark学习之数据读取与保存总结(二)

    8.Hadoop输入输出格式 除了 Spark 封装的格式之外,也可以与任何 Hadoop 支持的格式交互.Spark 支持新旧两套Hadoop 文件 API,提供了很大的灵活性. 要使用新版的 Ha ...

  9. 【原】Learning Spark (Python版) 学习笔记(二)----键值对、数据读取与保存、共享特性

    本来应该上周更新的,结果碰上五一,懒癌发作,就推迟了 = =.以后还是要按时完成任务.废话不多说,第四章-第六章主要讲了三个内容:键值对.数据读取与保存与Spark的两个共享特性(累加器和广播变量). ...

  10. MATLAB对于文本文件(txt)数据读取的技巧总结(经典中的经典)

    振动论坛原版主eight的经典贴http://www.chinavib.com/thread-45622-1-1.html MATLAB对于文本文件(txt)进行数据读取的技巧总结(经典中的经典)由于 ...

随机推荐

  1. 关于this的指向

    1.谁调用该函数this指向就指向谁 2.回调函数中this的指向永远都指向window 3.箭头函数指向最近的作用域,箭头函数本身是没有this的指向 4.定时器永远指向window 5.严格模式下 ...

  2. elasticsearch中 refresh 和flush区别(转)

    elasticsearch中有两个比较重要的操作:refresh 和 flush refresh操作 当我们向ES发送请求的时候,我们发现es貌似可以在我们发请求的同时进行搜索.而这个实时建索引并可以 ...

  3. Book : <Hands-on ML with Sklearn & TF> pdf/epub

    非常好的书,最近发现了pdf版本,链接:http://www.finelybook.com/hands-on-machine-learning-with-scikit-learn-and-tensor ...

  4. C++标准库之string返回值研究

    先说结论(不一定适用所有环境): 1) GCC默认开启了返回值优化(RVO),除非编译时指定“-fno-elide-constructors”: 2) 现代C++编译器一般都支持返回值优化: 3) s ...

  5. python列表和字符串的三种逆序遍历方式

    python列表和字符串的三种逆序遍历方式 列表的逆序遍历 a = [1,3,6,8,9] print("通过下标逆序遍历1:") for i in a[::-1]: print( ...

  6. 日期类时间类,日期时间类,单例模式,装箱与拆箱,数字类随机数,BigDecimal总结

    1.日期类,时间类,日期时间类 初步日期使用方法及格式转换方法(旧方法): 格式://Mon Jul 30 11:26:05 CST 2018             年月日时分秒    CST代表北 ...

  7. Apache启动不成功时,用命令行检测(新手)

    1,在配置Apache服务器时,经常要在httpd.conf 修改和添加一些代码,编写中,误写或者写错时,无法正常启动时,直接报错The requested operation has failed! ...

  8. linux之Ubuntu学习

    开始学习Linux系统是在通过虚拟机VMware上安装Ubuntu操作系统来学习的. 一.Ubuntu安装及使用 第一步:安装虚拟机VMware 第二步:虚拟机安装好之后,创建一个新的虚拟机,安装Ub ...

  9. Shell文件权限-1

  10. python学习总结(一)

    1.编码格式发展历史 ASCII 255 Ibytes --> 1980 gb2312  7000+ -->1995 GBK1.0 2W+ -->2000 GB18030 2.7W+ ...