调教肉文小说-国产成本人片免费av-空姐av种子无码-在线观看免费午夜视频-综合久久精品激情-国产成人丝袜视频在线观看软件-大芭区三区四区无码-啊啊好爽啊啊插啊用力啊啊-wanch视频网-国产精品成人a免费观看


環(huán)境

? ?Sqlserver 2016

? ?.net 4.5.2

?

目前測試數(shù)據(jù)1300萬?大約3-4分鐘.(限制一次讀取條數(shù)?和?線程數(shù)是?要節(jié)省服務(wù)器資源,如果調(diào)太大服務(wù)器其它應(yīng)用可能就跑不了了),
SqlServerDBHelper為數(shù)據(jù)庫幫助類.沒有什么特別的處理.?配置連接串時記錄把連接池開起來

另外.以下代碼中每次寫都創(chuàng)建了連接 .之前試過一個連接反復(fù)用. 130次大約有20多次?數(shù)據(jù)庫會出問題.并且需要的時間是7-8分鐘?左右.?

配置文件:?xxx.json
[ { /*連接字符串 */ "ConnStr": "", "FilePath": "讀取的文件地址", /*數(shù)據(jù)庫表名稱 */ "TableName":
"寫入的數(shù)據(jù)庫表名", /*導(dǎo)入前執(zhí)行的語句 */ "ExecBeforeSql": "", /*導(dǎo)入后執(zhí)行的語句 */ "ExecAfterSql": "",
/*映射關(guān)系 */ "Mapping": [ { "DBName": "XXX", "TxtName": "DDD" } ], /*過濾數(shù)據(jù)的正則
當(dāng)前只實現(xiàn)了小數(shù)據(jù)一次性讀完的檢查*/ "FilterRegex": [], /*檢查數(shù)據(jù)合法性(從數(shù)據(jù)庫獲取字段屬性進行驗證) */ "CheckData":
false, /*列分隔符*/ "Separator": "\t", /*表頭的行數(shù)*/ "HeaderRowsNum": 1 } ]
?

讀取代碼
:?注意?ConfigurationManager.AppSettings["frpage"]?和?ConfigurationManager.AppSettings["fr"]?需要自己配置好

?
//讀取配置文件信息 List<dynamic> dt = JsonConvert.DeserializeObject<List<dynamic
>>(File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"
config\\ImportTxt.json"))); LogUtil.Info("開始讀取txt數(shù)據(jù),讀取配置:" + dt.Count + "條"); if
(dt.Count ==0) { return; } List<Task> li = new List<Task>(); foreach (dynamic
rowin dt) { LogUtil.Info("開始處理數(shù)據(jù):" + JsonConvert.SerializeObject(row));
li.Add(ProcessRow(row)); } Task.WaitAll(li.ToArray()); LogUtil.Info("數(shù)據(jù)讀取完畢");
public async Task ProcessRow(dynamic row) { await Task.Run(() => {
AutoResetEvent AE= new AutoResetEvent(false); DataTable Data = null; string
error ="", ConnStr, TableName, ExecBeforeSql, ExecAfterSql; Boolean IsCheck =
Convert.ToBoolean(row["CheckData"]); TableName =
Convert.ToString(row.TableName); ConnStr= Convert.ToString(row.ConnStr);
ExecBeforeSql= Convert.ToString(row.ExecBeforeSql); ExecAfterSql =
Convert.ToString(row.ExecAfterSql);int HeaderRowsNum =
Convert.ToInt32(row.HeaderRowsNum);string Separator =
Convert.ToString(row.Separator); Dictionary<string, string> dic = new
Dictionary<string, string>(); //文件達到多大時就分行讀取 int fr = 0; if (!int
.TryParse(ConfigurationManager.AppSettings["fr"], out fr)) { fr = 100; } fr =
fr *1024 * 1024; //分行讀取一次讀取多少 int page = 0; if (!int
.TryParse(ConfigurationManager.AppSettings["frpage"], out page)) { page = 50000
; }foreach (var dyn in row.Mapping) { dic.Add(Convert.ToString(dyn.TxtName),
Convert.ToString(dyn.DBName)); } List<string> regex = new List<string>();
foreach (string item in row["FilterRegex"]) { regex.Add(item); } string fpath =
"", cpath = ""; cpath = Convert.ToString(row["FilePath"]); string rootPath =
Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"tmp"); if (!
Directory.Exists(rootPath)) { Directory.CreateDirectory(rootPath); } fpath=
Path.Combine(rootPath, Path.GetFileName(cpath)); File.Copy(cpath, fpath,true);
LogUtil.Info("拷文件到本地已經(jīng)完成.從本地讀取數(shù)據(jù)操作"); int threadCount =
Environment.ProcessorCount *3; FileInfo fi = new FileInfo(fpath); //
如果文件大于100M就需要分批讀取.一次50萬條 if (fi.Length > fr) { long sumCount = 0; StreamReader
sr= new StreamReader(fi.OpenRead()); int headRow = 0; string rowstr = ""; List
<Thread> li_th =new List<Thread>(); bool last = false; int ij = 0; LogUtil.Info(
"生成StreamReader成功 "); #region 逐行讀取 while (sr.Peek() > -1) { rowstr =
sr.ReadLine();#region 將行數(shù)據(jù)寫入DataTable if (headRow < HeaderRowsNum) { Data = new
DataTable();foreach (string scol in rowstr.Split(new string[] { Separator },
StringSplitOptions.RemoveEmptyEntries)) { Data.Columns.Add(scol.Trim(),typeof(
string)); } headRow++; continue; } else { //行數(shù)據(jù) if (headRow > 1) { for (int i =
1; i < headRow && sr.Peek() > -1; i++) { rowstr += " " + sr.ReadLine(); } }
Data.Rows.Add(rowstr.Split(new string[] { Separator },
StringSplitOptions.RemoveEmptyEntries));if (Data.Rows.Count < page && sr.Peek()
> -1) { continue; } } last = (sr.Peek() == -1); #endregion sumCount +=
Data.Rows.Count; ProcessPath(Data, page, sr,ref ij, TableName, ExecBeforeSql,
ExecAfterSql, dic, IsCheck, li_th);#region 檢查線程等待 if ((ij > 0 && (ij %
threadCount) ==0) || last) { LogUtil.Info("完成一批次當(dāng)前共寫數(shù)據(jù): " + sumCount); while (
true) { bool isok = true; foreach (var item in li_th) { if (item.IsAlive) { isok
=false; Application.DoEvents(); Thread.Sleep(1000); } } if (isok) {
li_th.Clear();break; } } //最后一頁要等所有的執(zhí)行完才能執(zhí)行 if (sr.Peek() == -1) {
WriteTODB(TableName, Data, ExecBeforeSql, ExecAfterSql, dic,false, true);
LogUtil.Info("最后一次寫入完成"); } LogUtil.Info(" 線程退出開始新的循環(huán)..."); } Data.Clear();
#endregion } sr.Dispose(); #endregion } else { using (SQLServerDBHelper sdb =
new SQLServerDBHelper()) { sdb.OpenConnection(); #region 一次性讀取處理 Data =
LoadDataTableFromTxt(fpath,ref error, Separator, HeaderRowsNum, regex, IsCheck,
dic, TableName);if (IsCheck) { DataRow[] rows = Data.Select("ErrorMsg is not
null"); if (rows.Length > 0) { LogUtil.Info($"讀取{TableName} 數(shù)據(jù)出錯 :
{JsonConvert.SerializeObject(rows)}"); return; } } LogUtil.Info($"讀取{TableName}
的txt數(shù)據(jù)完成.共讀取數(shù)據(jù):{Data.Rows.Count}條"); if (Data.Rows.Count == 0 || !string
.IsNullOrWhiteSpace(error)) {if (!string.IsNullOrWhiteSpace(error)) {
LogUtil.Info("讀取數(shù)據(jù)出錯,地址:" + Convert.ToString(row["FilePath"]) + " \r\n 錯誤:" +
error); }return; } sdb.BgeinTransaction(); try { WriteTODB(TableName, Data,
ExecBeforeSql, ExecAfterSql, dic, sdb: sdb); sdb.CommitTransaction();
LogUtil.Info(TableName+ "數(shù)據(jù)更新完畢 !!"); } catch (Exception ex) {
LogUtil.Info(TableName+ " 更新數(shù)據(jù)出錯,錯誤:" + ex.Message + " \r\n 堆棧:" +
ex.StackTrace); sdb.RollbackTransaction(); }#endregion } } GC.Collect(); }); }
private void ProcessPath(DataTable Data, int page, StreamReader sr, ref int ij,
string TableName, string ExecBeforeSql, string ExecAfterSql, Dictionary<string,
string> dic, bool IsCheck, List<Thread> li_th) { int threadCount =
Environment.ProcessorCount *4; string error = ""; PoolModel p = new PoolModel {
TableName = TableName, ExecBeforeSql = ExecBeforeSql, ExecAfterSql =
ExecAfterSql, dic = dic }; p.Data = Data.Copy(); if (IsCheck) { using
(SQLServerDBHelper sdb =new SQLServerDBHelper()) { error = CheckData(Data,
TableName, dic, sdb); } DataRow[] rows= Data.Select("ErrorMsg is not null"); if
(rows.Length >0 || !string.IsNullOrWhiteSpace(error)) { LogUtil.Info($"
讀取{TableName} 數(shù)據(jù)出錯 : {JsonConvert.SerializeObject(rows)}\r\n錯誤:" + error);
return; } } ij++; if (ij == 1) { WriteTODB(p.TableName, p.Data,
p.ExecBeforeSql, p.ExecAfterSql, p.dic,true, false); LogUtil.Info("首次寫入完成"); }
else if (sr.Peek() > -1) { Thread t = new Thread(d => { PoolModel c = d as
PoolModel;try { WriteTODB(c.TableName, c.Data, c.ExecBeforeSql, c.ExecAfterSql,
c.dic,false, false); } catch (ThreadAbortException) { LogUtil.Error("
線程退出................."); } catch (Exception ex) { LogUtil.Error(c.TableName + "
寫入數(shù)據(jù)失敗:" + ex.Message + "\r\n堆棧:" + ex.StackTrace + "\r\n 數(shù)據(jù): " +
JsonConvert.SerializeObject(c.Data)); ExitApp();return; } }); t.IsBackground =
true; t.Start(p); li_th.Add(t); } } public void ExitApp() { Application.Exit();
}public void WriteTODB(string TableName, DataTable Data, string ExecBeforeSql,
string ExecAfterSql, Dictionary<string, string> dic, bool first = true, bool
last =true, SQLServerDBHelper sdb = null) { bool have = false; if (sdb == null)
{ sdb= new SQLServerDBHelper(); have = true; } if (first && !string
.IsNullOrWhiteSpace(ExecBeforeSql)) { LogUtil.Info(TableName+ "執(zhí)行前Sql :" +
ExecBeforeSql); sdb.ExecuteNonQuery(ExecBeforeSql); } sdb.BulkCopy(Data,
TableName, dic);if (last && !string.IsNullOrWhiteSpace(ExecAfterSql)) {
LogUtil.Info(TableName+ "執(zhí)行后Sql :" + ExecAfterSql);
sdb.ExecuteNonQuery(ExecAfterSql); } LogUtil.Info(TableName+ "本次執(zhí)行完成 "); if
(have) { sdb.Dispose(); } }public string CheckData(DataTable dt, string
dbTableName, Dictionary<string, string> dic, SQLServerDBHelper sdb) { if (string
.IsNullOrWhiteSpace(dbTableName)) {return "表名不能為空!"; } if (dic.Count == 0) {
return "映射關(guān)系數(shù)據(jù)不存在!"; } List<string> errorMsg = new List<string>(); List<string>
Cols =new List<string>(); dic.Foreach(c => { if (!dt.Columns.Contains(c.Key)) {
errorMsg.Add(c.Key); } Cols.Add(c.Key); });if (errorMsg.Count > 0) { return "
數(shù)據(jù)列不完整,請與映射表的數(shù)據(jù)列數(shù)量保持一致!列:" + string.Join(",", errorMsg); } //
如果行數(shù)據(jù)有錯誤信息則添加到這一列的值里 dt.Columns.Add(new DataColumn("ErrorMsg", typeof(string))
{ DefaultValue ="" }); string sql = @"--獲取SqlServer中表結(jié)構(gòu) SELECT syscolumns.name
as ColName,systypes.name as DBType,syscolumns.isnullable, syscolumns.length
FROM syscolumns, systypes WHERE syscolumns.xusertype = systypes.xusertype AND
syscolumns.id = object_id(@tb) ;"; DataSet ds = sdb.GetDataSet(sql, new
SqlParameter[] {new SqlParameter("@tb", dbTableName) }); EnumerableRowCollection
<DataRow> TableDef = ds.Tables[0].AsEnumerable(); // string colName=""; Object
obj_val;//將表結(jié)構(gòu)數(shù)據(jù)重組成字典. var dic_Def = TableDef.ToDictionary(c =>
Convert.ToString(c["ColName"]), d => { string DBType = ""; string old =
Convert.ToString(d["DBType"]).ToUpper(); DBType = GetCSharpType(old); return new
{ ColName = Convert.ToString(d["ColName"]), DBType = DBType, SqlType = old,
IsNullble = Convert.ToBoolean(d["isnullable"]), Length = Convert.ToInt32(d["
length"]) }; }); DateTime now = DateTime.Now; foreach (DataRow row in dt.Rows)
{ errorMsg.Clear();foreach (string colName in Cols) { if
(dic.ContainsKey(colName)) {if (!dic_Def.ContainsKey(dic[colName])) { return "
Excel列名:" + colName + " 映射數(shù)據(jù)表字段:" + dic[colName] + "在當(dāng)前數(shù)據(jù)表中不存在!"; } //去掉數(shù)據(jù)兩邊的空格
row[colName] = obj_val = Convert.ToString(row[colName]).Trim(); var info =
dic_Def[dic[colName]];//是否是DBNULL if (obj_val.Equals(DBNull.Value)) { if (!
info.IsNullble) { errorMsg.Add("列" + colName + "不能為空!"); } } else { if
(info.DBType =="String") { //time類型不用驗證長度(日期的 時間部分如 17:12:30.0000) if
(info.SqlType =="TIME") { if (!DateTime.TryParse(now.ToString("yyyy-MM-dd") + "
" + obj_val.ToString(), out now)) { errorMsg.Add("列" + colName + "
填寫的數(shù)據(jù)無效應(yīng)為日期的時間部分如:17:30:12"); } } else if (Convert.ToString(obj_val).Length >
info.Length) { errorMsg.Add("列" + colName + "長度超過配置長度:" + info.Length); } } else
{ Type t= Type.GetType("System." + info.DBType); try { //
如果數(shù)字中有千分位在這一步可以處理掉重新給這個列賦上正確的數(shù)值 row[colName] = Convert.ChangeType(obj_val, t);
; }catch (Exception ex) { errorMsg.Add("列" + colName + "填寫的數(shù)據(jù)" + obj_val + "無效應(yīng)為
" + info.SqlType + "類型."); } } } } } row["ErrorMsg"] = string.Join(" || ",
errorMsg); }return ""; } /// <summary> /// wm 2018年11月28日13:37 /// 將數(shù)據(jù)庫常用類型轉(zhuǎn)為C#
中的類名(.Net的類型名)/// </summary> /// <param name="old"></param> ///
<returns></returns> private string GetCSharpType(string old) { string DBType =
""; switch (old) { case "INT": case "BIGINT": case "SMALLINT": DBType = "Int32";
break; case "DECIMAL": case "FLOAT": case "NUMERIC": DBType = "Decimal"; break;
case "BIT": DBType = "Boolean"; break; case "TEXT": case "CHAR": case "NCHAR":
case "VARCHAR": case "NVARCHAR": case "TIME": DBType = "String"; break; case "
DATE": case "DATETIME": DBType = "DateTime"; break; default: throw new
Exception("GetCSharpType數(shù)據(jù)類型" + DBType + "無法識別!"); } return DBType; } public
class PoolModel { public string TableName { get; set; } public DataTable Data {
get; set; } public string ExecBeforeSql { get; set; } public string
ExecAfterSql {get; set; } public Dictionary<string, string> dic { get; set; } }
?
/// <summary> /// wm 2018年11月28日13:32 ///
獲取Txt數(shù)據(jù)并對數(shù)據(jù)進行校驗返回一個帶有ErrorMsg列的DataTable,如果數(shù)據(jù)校驗失敗則該字段存放失敗的原因///
注意:在使用該方法前需要數(shù)據(jù)表應(yīng)該已經(jīng)存在/// </summary> /// <param name="isCheck">
是否校驗數(shù)據(jù)合法性(數(shù)據(jù)需要校驗則會按傳入的dbTableName獲取數(shù)據(jù)庫表的結(jié)構(gòu)出來驗證)</param> /// <param name="map">
如果需要驗證數(shù)據(jù)則此處需要傳映射關(guān)系 key Excel列名,Value 數(shù)據(jù)庫列名</param> /// <param
name="dbTableName">驗證數(shù)據(jù)合法性的表(即數(shù)據(jù)會插入到的表)</param> /// <param name="error">
非數(shù)據(jù)驗證上的異常返回</param> /// <param name="Regexs">用來過濾數(shù)據(jù)的正則</param> /// <param
name="path">讀取文件的路徑</param> /// <param name="Separator">列分隔符</param> /// <param
name="HeaderRowsNum">表頭的行數(shù)</param> /// <returns>
如果需求驗證則返回一個帶有ErrorMsg列的DataTable,如果數(shù)據(jù)校驗失敗則該字段存放失敗的原因, 不需要驗證則數(shù)據(jù)讀取后直接返回DataTable
</returns> public DataTable LoadDataTableFromTxt(string path, ref string error,
string Separator, int HeaderRowsNum, List<string> Regexs = null, bool isCheck =
false, Dictionary<string, string> map = null, string dbTableName = "",
SQLServerDBHelper sdb =null) { DataTable dt = new DataTable(); error = ""; if
(isCheck && (map ==null || map.Count == 0 || string
.IsNullOrWhiteSpace(dbTableName))) { error= "參數(shù)標(biāo)明需要對表格數(shù)據(jù)進行校驗,但沒有指定映射表集合或數(shù)據(jù)表名.";
return dt; } string txts = File.ReadAllText(path); #region 把讀出來的方便數(shù)據(jù)轉(zhuǎn)成DataTable
Regexs?.ForEach(c => { txts = new Regex(c).Replace(txts, ""); }); ////替換掉多表的正則
//Regex mu_re = new Regex(@"\+[-+]{4,}\s+\+[-+\s|\w./]{4,}\+"); //FTP new
Regex(@"\+[-+]{4,}\s+\+[-+\s|\w./]{4,}\+");//原來以-分隔的 new
Regex(@"-{5,}(\s)+-{5,}\s+\|.+(\s)?\|.+(\s)?\|-{5,}"); ////去掉所有橫線 //Regex mu_r
= new Regex(@"[+-]{4,}");//FTP new Regex(@"[+-]{4,}"); //原 new
Regex(@"(\|-{5,})|(-{5,})");//string s1 = mu_re.Replace(txts, ""); //string s2
= mu_r.Replace(s1, "");// string[] tts = s2.Split(new string[] { "\r\n" },
StringSplitOptions.None); string[] tts = txts.Split(new string[] { "\r\n" },
StringSplitOptions.None);string[] vals; string s1; //
生成表頭默認第一行時表頭直到遇到第一個只有一個|的內(nèi)容為止(有幾行表頭,下面的內(nèi)容就會有幾行) int headerNum = -1;//記錄表頭有幾列
DataRow dr;//處理col重復(fù)的問題,如果有重復(fù)按第幾個來命名 比如 A1 A2 Dictionary<string, int> col_Rep =
new Dictionary<string, int>(); string colName = ""; bool isre = false;//
記錄當(dāng)前是否有重復(fù)列 int empty_HeaderRow = 0; for (int i = 0; i < tts.Length; i++) { s1 =
tts[i];//還未獲取出表頭 if (headerNum < HeaderRowsNum) { vals = s1.Split(new string[]
{ Separator }, StringSplitOptions.RemoveEmptyEntries);foreach (string col in
vals) { colName= col.Trim(); if (col_Rep.Keys.Contains(colName)) {
col_Rep[colName]++; isre = true; //重復(fù)列處理 //colName += col_Rep[colName]; continue
; }else { col_Rep.Add(colName, 1); } dt.Columns.Add(colName, typeof(string)); }
headerNum= (i == (HeaderRowsNum - 1)) ? HeaderRowsNum : 0; } else { if (string
.IsNullOrWhiteSpace(s1.Trim()) ||string.IsNullOrWhiteSpace(s1.Replace(Separator,
""))) { continue; } if (isre) { error = "列:" + string.Join(",", col_Rep.Where(c
=> c.Value >1).Select(c => c.Key)) + "存在重復(fù)"; return dt; } //多行時把多行的數(shù)據(jù)加在一起處理 if
(headerNum >1) { for (int j = 1; j < headerNum && (i + j) < tts.Length; j++) {
//數(shù)據(jù)第一行最后沒有| 如果沒數(shù)據(jù)則直接換行了所以這里補一個空格防止數(shù)據(jù)被當(dāng)空數(shù)據(jù)移除了 s1 += " " + tts[i + j]; } } vals
= s1.Split(new string[] { Separator }, StringSplitOptions.RemoveEmptyEntries);
dr= dt.NewRow(); dr.ItemArray = vals; dt.Rows.Add(dr); //因為本次循環(huán)結(jié)束上面會去++
所以這里只加headerNum-1次 i += (headerNum - 1); } } #endregion if (isCheck) { //
dt.Columns.Remove("Item");//dt.Columns["Item1"].ColumnName = "Item"; //
dt.Columns.RemoveAt(dt.Columns.Count - 2); error = CheckData(dt, dbTableName,
map, sdb); }return dt; }
?

友情鏈接
ioDraw流程圖
API參考文檔
OK工具箱
云服務(wù)器優(yōu)惠
阿里云優(yōu)惠券
騰訊云優(yōu)惠券
京東云優(yōu)惠券
站點信息
問題反饋
郵箱:[email protected]
QQ群:637538335
關(guān)注微信

感谢您访问我们的网站,您可能还对以下资源感兴趣:

调教肉文小说-国产成本人片免费av-空姐av种子无码-在线观看免费午夜视频-综合久久精品激情-国产成人丝袜视频在线观看软件-大芭区三区四区无码-啊啊好爽啊啊插啊用力啊啊-wanch视频网-国产精品成人a免费观看 日韩18在线| 日韩欧美性爱视频| 加勒比在线视频| 精品久久视频| a视频免费在线观看| 无码一区二区久久| 91网站在线观看视频| 国产一区二区三区视频在线| 无码av亚洲一区二区毛片公司| 美女被操免费网站| 欧美丰满少妇人妻精品| 成人精品无码免费视频| 成人高清无码在线观看| 国产视频h| jzzijzzij亚洲成熟少妇在线观看 九色蝌蚪9l视频蝌蚪9l视频成人熟妇 | 婷婷五月天网址| 精品人伦一区二区三区| 水蜜桃成人网| 韩国一区二区在线观看| 91新婚人妻偷拍| 色吧视频| 国产高清在线| 午夜激情av| seseav| 亚洲美女一区| 中文字幕高清无码在线观看| 北岛玲丝袜办公室高跟| 九九热在线精品视频| 日韩一级乱伦| 影视先锋成人在线| 女人操逼视频| 亚洲一区二区视频| 免费一级a片| 97人人草| 777Av| 黑巨茎大战欧美白妞小说| 亚洲中文字幕免费在线观看| 韩国免费一级a一片在线播放| 国产精品人妻无码久久久郑州天气网 | 午夜操一操| 日日夜夜精品视频| 毛片传媒| 欧美日韩网站| 一本大道DVD中文字幕| 久久久人妻熟妇精品无码蜜桃 | 超碰护士| 欧美激情内射| 国产在线欧美在线白浆| 蜜桔视频嫩草蜜桃| 黄片免费视频| 亚洲日韩一区| 黄网站免费观看| 亚洲性爱网址| 操碰99| 午夜激情视频网站| 超碰免费视| 韩国无码免费| 亚欧一区二区| 亚洲精品乱码在线| 大地资源第三页在线观看免费播放最新 | 在线观看亚洲专区| 亚洲一级毛| 安徽妇搡BBBB搡BBBB按摩| 自慰影院| 日韩精品无码电影| 中文字幕电影| 欧美日韩一级毛| 亚洲一区翔田千里无码| 国产乱子伦无码视频免费| 91久久久久久久18| 国产自慰一区| 国产乱码精品一品二品| 国产小视频在线免费观看| 亚洲欧美在线视频免费| 99re88| 内射网站在线观看| 国产思思99re99在线观看| 麻酥酥在线视频| 嫩草视频在线播放| 欧美日韩一级二级三级| 免费无码国产| 日韩欧美大片在线观看| 欧美在线视频一区二区| 91精品久久久久久久久久久久| 人人操人人操人人操人人操| 麻豆一区在线| 欧美激情精品| 在线观看视频无码| 少妇人妻精品| 一级操逼毛片| 午夜操逼网| 精品欧美视频| 大黑人荫蒂BBBBBBBBB| 91性爱网| 国产亚洲激情| 美女黄片| 免费观看av| 高清国产AV| 国产乱婬AAAA片视频| 一区二区不卡视频| 在线观看国产| 国产激情都市一区二区三区欧美| 色999在线播放视频| 韩国中文字幕HD久久精品| 艹b视频在线观看| 国产精品久久久91| 国产成人免费观看视频| 99免费视频在线| 日韩国产三级| 亚州v| 男女av免费| 亚洲免费毛片| A视频免费观看| 影音先锋日韩精品| 久久男女| 日逼一级片| 伊人中文字幕| 中文字幕1| 18成人毛片| 亚洲AV秘无码一区在线| 久久视频这里有精品| 中文字幕亚洲专区| 激情久久AV一区AV二区AV三区| 在线观看视频亚洲| 欧美在线成人视频| 熟练中出-波多野结衣| 大香蕉性爱| 国产熟妇婬乱一区二区| 91在线无码精品秘国产三年| 精品无套| 天天爽天天爽夜夜爽| 亚洲射射| 日本黄色三级| 久久久久性| 亚洲精品中文字幕在线观看| 肏屄视频免费观看| 99在线视频免费观看| 91人妻人人澡人人爽人| 青草中文娱乐网在线| 日韩操大屌| 天堂视频中文在线| 国产一区二区三区四区在线观看| 美女靠逼视频| 韩国三级av| 蜜臀精品| 強姦婬片A片AAA毛片Mⅴ| 亚洲色婷婷| 大香蕉精品欧美色综合2025 | 久久一道| 欧美AA片| h片在线观看免费| 91日韩| 翔田千里无码精品| 综合久久久久| 2024国产精品| 亚洲福利视频网站| 91精品导航| 亚洲综合激情| 国产中文字幕AV在线播放| 精品无码在线观看视频| 日韩精品视频免费| 欧美成人视频网| 第四色激情网| 人人插人人摸| 青草社区在线观看| 无码天天| 欧美性猛交XXXXⅩXX| 99热这里只有精| 俺来也俺去了| caobi视频| 亚洲成人一区二区在线观看| 国产成人精品一区二区三区四区 | 色综合久久88色综合| 伊人精品在线| 国产综合精品久久久久成人AV| 国产一级二级三级| 私人玩物』黑絲OL尤物| 噜噜噜AV| 99re6热在线精品视频| 五月天激情综合网| 乱子伦国产精品| 男人天堂AV片| 日日爱99| 91精品无码一区二区| 国产夫妻精品| 人人妻人人干| 国产精品秘精东影业| 国产视频精品一区二区三区| 囯产精品久久久久久久久免费无码| 国产精品二区高清在线苍井空| 91成人电影在线观看| 亚洲影院中文字幕| 蜜桃人妻无码AV天堂二区| 亚洲精品一区无码A片丁香花| 3D动漫精品啪啪一区二区| 欧美激情一级| 色哟哟无码| 久久99免费视频| 日韩人妻无码一区二区三区中文| 激情五月天av| 午夜麻豆| 欧美性爱一区二区三区| 日韩一级在线| 日本免费在线观看视频| 日韩爆乳一区二区三区| 国产精品久久久久久久久久九秃 | 日韩欧美一级A片| 国产aaaaaa| 99综合视频| 精品免费国产一区二区三区四区的使用方法| 九九操比| 黄色一级大片在线免费看产| 杨贵妃一级婬片90分钟| 清清草视频| www.av免费| 亚洲AⅤ无码一区二区波多野按摩| 黄色一级免费电影| 蜜桃一区二区三区| 欧美一级电影| 黄色天堂| 国产久久久久久久| 伊人在综合| 亚洲瑟瑟| 大香蕉久久久久久| 东京热综合| 欧美日韩一区二区三区四区五区六区 | 麻豆成人91精品二区三区| 亚洲精品视频在线| 国产剧情一区二区av在线观看 | 蜜桃秘av一区二区三区安全| 欧美footjob高跟脚交| 大香蕉久久精品| 97乱伦| 黄色免费看视频| 国产精品911| 黄色免费网站在线观看| 韩国无码AV| 国产高潮白浆喷| 狼友视频在线播放| 十八禁网站在线| 91蝌蚪91九色| 操逼网站在线观看| 四虎2025在线51| 免费人成在线观看视频播放| 国产一卡二卡在线| 另类老妇奶性BBWBBw| 精品秘一区性综合三区| 无码V | 熟女在线视频| 欧美成人无码A片免费| 亚洲国产精品成人网站| 成人亚洲欧美| 免费看无码一级A片在线播放| www.怡春院| 女人18片毛片90分钟免费明星| 中文字幕AV播放| 国产欧美高清在线| H网站在线观看| 国产黄A片免费网站免费| 成人女人18女人毛片| 婷婷国产成人精品视频| 日韩人妻在线观看| 国产av探花| 国产AV无码专区| 人善交精品一区二区三区| 欧美成人网站视频| 欧美操逼在线| 91精品人妻一区二区三区蜜桃欧美 | 在线观看精品视频| 日韩乱伦电影| 996久久| 国产成人av在线观看| 天天干天天拍| 五月丁香在线播放| 操屄小视频| 日韩黄色一级片| www.青草视频| 国精产品一二四区黑人| 欧美在线观看一区| 欧美成人AA| 中文字幕第一区| 国产老女人操逼视频| 亚洲天堂网在线视频| 狼友视频在线观看18| 久久五月天综合| www.6969成人片亚洲| 日韩黄色中文字幕| 黄片大全在线免费观看| 免费无码视频在线观看| 成人黄色一级A片| 国产欧美综合在线| S28AV| 国产精品永久久久久久久久久| 无码婷婷| 做爱A片| 在线观看成年人视频| 色呦呦一欧美| 97人人澡| 免费a片在线观看| 午夜成人无码视频| 2025天天干| 人妻无码蜜桃视频| 丁香五月婷婷啪啪| 天天天天干| 日韩永久免费| 欧美综合国产| 青青国产在线观看| 中文字幕第2页| 无码人妻精品一区二区50| 香蕉AV777XXX色综合一区 | 这里有精品| 亚洲午夜激情电影| 欧美日韩中文字幕在线| 亚洲不卡在线| 中文字幕777| 国产精品无码永久免费A片| 围内精品久久久久久久久久‘变脸| 18禁免费网站| 人与禽一级A片一区二区三区| 东方av在线观看| 操久在线| 97人人爽人人爽人人人| 怡红院成人AV| 熟妇人妻中文AV无码| 欧美日本一区二区三区| 韩国无码一区| 国产麻豆AⅤMDMD0071| 日韩骚货| 无码网址| 青青草成人在线观看| 婷婷五月天视频| 黄色电影av| 成人网站视频在线观看| 色色网的五月天| 日本中文字幕电影| 中文字幕在线播放第一页| 青娱乐毛片| www.91超碰在线| 五月伊人激情| 成人一区二区在线| 一级a一级a爱片免费免免高潮| 91精品人妻人人爽| 成年人免费视频网站| 中文无码Av| 亚洲欧洲综合| 亚洲AV色香蕉一区二区三区| 欧美精品成人在线| 大香蕉第一页| 国产人人色| 人人干人| 69看片| 婷婷色片| 插菊花综合网3| 欧美日韩亚洲一区二区三区| 国产精品三级在线观看| 亚洲国产成人av| 欧一美一婬一伦一区二区三区黑人| 午夜理论在线| 操BBBB| 日日爱av| 蜜桃网站| 暖暖av| 免费黄片在线看| 国产熟妇码视频app| 亚洲精品一区二区三区在线观看| 国产女人18毛片水真多成人如厕| 人人操人人色| 一级特黄录像免费播放下载软件| 玖玖爱AV| 免费看一级黄色片| 日本一区二区三区四区| 人人妻人人妻| V片免费看| 激情网五月天| 超碰人人爱人人操| 久久综合九九| 亚洲高清视频免费| 少妇无码| 大香蕉男人天堂| 蜜臀AV成人| 色婷婷免费视频| 欧美a∨| 国产激情无码视频| 国产一级片内射| 免费无码高清| 日韩中文字幕在线免费观看| 最新中文字幕视频| 黄色视频网站在线免费观看| 精品国产一级A片黄毛网站 | 四虎2025在线51| aaa午夜| AV中文字幕电影| 婷婷视频在线| 尤物视频在线观看视频| 操逼大片| 欧美成人福利| 免费啪啪视频| 午夜性福利| 特写毛茸茸BBwBBwBBw| 高清无码免费在线观看| 伊人综合视频| 亚洲人成777| 人人肏| 亚洲综合人妻| 亚洲不卡视频| 91在线综合| 精品成人Av一区二区三区| 在线观看黄色av| 自拍偷拍激情视频| 日韩国产欧美精品一区| 91精品国产综合久久久蜜臀主演| 伊人影院在线免费观看| 成人做爰A片一区二区app| 另类性爱视频| 操比一区| 操大爷影院| 国产无码操逼视频| 国产综合久久久777777| 国产视频一区二区在线观看| 国产精品扒开腿| 亚洲性爱视频在线观看| 国产网站免费| 人妻性爱| 成人视频无码| 国产成人无码精品一区秘二区| 久久精品美臀| 久久婷婷亚洲| 欧美一区二区三区四| 涩婷婷| 亚洲视频网站在线观看| 国产精品无码乱伦| 日韩精品人妻中文字幕蜜乳| 无码人妻精品一区二区蜜桃漫画 | 亚洲五月丁香| 日韩欧美亚洲一区二区三区| 阿宾MD0165麻豆沈娜娜| 亚洲av免费在线| 丁香五月在线播放| 黄片网址| 国产香蕉在线观看| 另类TS人妖一区二区三区| 黄色国产视频| 成人免费视频国产免费麻豆,| 国产丰满大乳无码免费播放| 欧美干| 91久久精品视频| 四虎成人精品永久免费AV九九| 99在线精品视频| 91麻豆精品国产91久久久吃药| 人妻熟女在线视频| 亚洲成人中文字幕| 天天干人妻| 一边做一边说国语对白| 日本女优婷婷青青草原| 在线播放JUY-925被丈夫上司侵犯的第7天 | 91成人一区二区| 成人激情视频| 黄片免费看视频| www.xxx国产| 国产和日韩中文字幕| 日韩成人网址| 日本理论片一道本| 人人澡人人妻人人爽| 成人欧美在线| 97爱爱爱| 九九九九九九精品视频| 午夜黄片| 国产一区二区三区无码| 免费国产在线视频| 麻豆精品一区二区三区| 久久久久久av| 中文字幕无码日韩| 成人无码影院日韩,成人年…| 91人妻人人澡人人爽人人精品| 一道本无码在线| 69欧美视频| 免费观看一级A片| 天天插天天插| 亚洲欧美高清| 国产亚洲无码激情前后夹击| 亚洲av不卡| 九九这里有精品| 亚洲小视频在线播放| 久久中文无码| 久久精品美臀| 99免费精品视频| 九九热视频在线观看| 免费aaa| 翔田千里无码| 亚洲精品乱码久久久久久蜜桃91| 中文字幕高清无码在线| 日本亚洲视频| 中文字幕激情精品| 久久精品视频免费观看| 欧美精品成人免费| 韩国一区二区在线观看| 亚洲一区二区黄色电影视频网站| 成人网站免费在线观看| 91精品在线观看视频| 四虎亚洲无码| 欧美日韩逼| 日韩av电影在线观看| 中文字幕第一| 亚洲精品国产精品国自产A片同性| 亚洲人妻免费视频| 尤物av| 91精品国产麻豆国产自产在线| 国产操逼大片| jizz在线观看免费视频| 欧美高清无码| www.超碰在线| 欧美一级黄色大片| 亚洲AV人人夜夜澡人人| 精国产品一区二区三区A片| 日韩精品视频在线| 国产在线拍揄自揄拍无码网站新闻 | 亚洲秘无码一区二区三区| 3D精品啪啪一区二区免费| 97无码| 无码一区三区| 婷婷国产精品| 中文字幕日本| 国产AAA片| 91超碰在线观看| 九九成人视频| 国产精品粉嫩福利在线| 日韩欧美一区在线| 亚洲图片中文字幕| AV天堂影视在线观看| 久久亚洲成人| 丁香五月天啪啪| 99国产在线观看免费视频| 操逼操逼操逼操逼操逼操逼| 北条麻妃久久视频在线播放| 午夜国产码网站码| 亚洲日韩一级片| 黄色视频网站在线看| 欧美午夜影院| 五月婷婷黄色| 亚洲欧美综合| 色综合久久88色综合天天| 婷婷色色网| 97超碰资源总站| 伊人大香焦网| 一区二区人妻| 国产一卡二卡| 五月天性爱视频| 无码一卡| 亚洲性爱在线播放| 成人黄A片免费| 久久久久久久久久久久成人| 欧美日韩A片欧美日| 成人网在线视频| 一级黄色电影网| 亚洲一区二区在线视频| 澳门午夜| 中文字幕中文字幕无码| 91蜜臀在线| 精品91美女| 欧美精产国品一二三区| 国产永久免费| 2025AV天堂网| 在线观看免费黄色| 成人性爱视频免费观看| 91香蕉在线看| 免费a片观看| 99精品在线| 无码人妻视频| 黄色一级片视频| 特大妓女BBwBBWBBw| 黑人AV在线观看| 色色五月丁香| 亚洲激情欧美激情| 无码不卡视频在线| 强伦轩人妻一区二区三区最新版本更新内容| 无码视频一区二区| 青娱乐无码| 91国产视频在线观看| 在线免费观看无码视频| 国产人体视频| 亚洲高清无码视频在线播放| 免费看黄色大全| 天干夜操| 国产无套在线观看| 午夜黄色| 啪啪免费网站| 国产三级片在线视频| 伊人成人大香蕉| 日一日干一干| 超碰成人97| 亚洲乱伦小说网| 日韩性爱一区| 高清无码视频直接看| 日韩av电影免费在线观看| 18SAV| 自慰喷水流白浆中文字幕| 国产91无码精品秘入口在线观看| 免费成人毛片| 涩久久| 免费a视频在线观看| 97大香蕉视频| 日本视频一区二区| 五月天综合视频| 欧美色图另类图片| 成人一区二区在线观看| 男人的天堂视频在线| 欧美特黄AAAAAA| 一道本无码免费视频| 特级毛片AAAAAA蜜桃| 玖玖爱AV| 手机不卡黄色视频在线| 国产精品一区二区三区四区| 蜜桃av秘无码一区三区四| 河南少妇搡BBBB搡BBBB| 国产一级a毛一级做a爱| 国产一区二区三区无码| 一区二区三区黄色| 成人欧美视频| 亚洲成人久久久| 日本无码在线视频| 日韩一级二级三级| 人人澡超碰碰| 亚洲AV无码精品国产| 91丨九色丨熟女泻火| 美女久久久久| 天天草视频| 亚洲成人资源| 亚洲精品成人网站| 亚洲婷婷在线观看| 成人欧美一区二区三区在线观看| 丰满人妻一区二区三区精品高清| 成人亚洲精品一区二区三区| 国产99999| 日韩精品毛片一区二区视频免费 | 一级黄色性爱视频| 91天天看| 亚洲天堂婷婷| 翔田千里无码AV在线观看| 探花一区二区| 国产一级生活片| 热九九精品| 骚色综合| 亚洲精品成人网站| 欧美18成人| 日韩一区二区无码视频| 一级特黄A片| 欧美成人三级片| www.xxx国产| 黄色日逼网站| 免费日韩一级| 91人妻人人澡人人爽人人玩| 夸克看成人片一级A片| 91人妻人人澡人人爽人人玩| 久久久久久五月天| 日韩三级网| 亚洲肏屄网| 五月婷婷色色色| 麻豆一区在线观看| 91久热| 久久久久久久久久国产| 北条麻妃人妻中文字幕91影视 | 色噜噜狠狠色综无码久久合欧美| 中文字幕乱妇无码Av在线| 欧亚毛片| 做爱网站| 国产免费AV片在线无码免费看| 外国成人视频| 欧美成人伦理片网| 最新AV在线播放| 亚洲国际中文字幕在线| 黄色视频网站日本| 成人三级片视频| 国产成人精品一区二区三区四区 | 人妻久操| 偷拍一区二区三区| 日日操人人操| 天天爽天天摸| 精品无码人妻一区二区三区| 免费观看操逼| 久久久久无码精品国产91福利 | 黄色视频网站在线播放| 成人午夜婬片A片| 99久久国产精| 69人妻人人澡人人爽久久| 2019人人操| 北条麻妃人妻中文字幕91影视| 亚洲高清无码一区二区三区| 天天综合天天做天天综合| 久草视频福利| 日本无码一区二区三区| 五月丁香五月婷婷| 亚洲成人中文字幕| 午夜操人妻| 人成免费网站| 97精品无码| 欧美AAAAAAAAAA特级| 69国产精品视频免费观看| 欧美日韩一区视频| 最新黄色av| 狠狠无码| 天堂中文字幕| 欧美、日韩、中文、制服、人妻| 男人天堂影院| 92午夜福利天堂视频2019| 国产精品久久久无码专区| 强开小嫩苞毛片一二三区| 免费看污网站| 综合色在线| a免费在线观看| 亚洲无码视频免费| 欧美夜夜爽| 亚洲精品成人电影| 天天日天天爽| 特级毛片在线观看| 亚洲无码在线高清| av无码av天天av天天爽| 四川少妇搡bbw搡bbbb| 国产嫩苞又嫩又紧AV在线| 大香蕉超碰在线| 婷婷在线综合| 久久久婷| 国产欧美综合视频一区二区在线| 亚洲AV无码日韩AV无码导航| 俺去啦俺去也| 欧美精品不卡| 国产内射精品| eeuss国产| 久久人爽| 高清一区二区三区| 2025毛片| 无码专区av| 91爱搞在线| 99九九视频| 亚洲欧洲精品在线| 搡BBBB搡BBB搡我瞎了| 日韩不卡在线| 波多野结衣成人网站| 免费观看黄色网| 国产小电影在线观看| 亚洲无码入口| 亚洲永久视频| 中文字幕专区| 国产顶级理伦| 中文字幕亚洲中文字幕| 免费在线观看Av| jizz无码| 久久99久久99精品免视看婷婷| 欧美大香蕉在线| 国产一区二区三区18| 国内自拍2025| 99久久久精品久久久久久| 加勒比综合网| 日本翔田千里奶水| 人妻互换一二三区免费| 精品一区国产探花| 影音先锋女人资源| 自拍三区| 日韩av在线电影| AA黄色片| 国产综合久久久777777| 日韩99热| 欧美成人精品激情在线观看| 欧美精品性爱视频| 国产视频二区| 99久久综合| 激情av在线观看| 99色天堂| 日韩无码视频免费| av资源网站| 香蕉福利视频| 国产18女人水真多免费看| 中文免费高清在线| 亚洲精品免费在线观看| 国产精品视频免费看| 免费激情网站| 久久婷婷久久| 夜夜精品视频| 玖玖爱在线精品视频| 一级黄色片在线观看| av无码在线观看| 天天摸天天肏| 国产精品久久久久久久牛牛| 日韩精品一区二区在线观看| 中文字幕在线亚洲| 国产激情都市一区二区三区欧美| 黄色性爱网址| 成年人国产| 狠狠躁夜夜躁人爽| 一级无码毛片| 黄总av| 国产女人在线视频| 伊人大香蕉电影| 一区色| 蜜桃视频91| 亚洲天堂在线视频播放| 一道本视频| 日韩精品人妻中文字幕蜜乳| 操逼AⅤ| 亚洲三级在线免费观看| 可以免费观看的av| 麻豆91在线| 亚洲精品成人av| 懂色av蜜臀av粉嫩av分| 国产精品免费人成人网站酒店| 碰碰97| 草视频在线| 日本A在线播放| 超级碰碰| 91啦丨露脸丨熟女| 中文字幕日韩欧美在线| 动漫一区二区| 日韩性爱视频网站| 久久99视频| 日韩二级片| 国产精品高潮呻吟久久| 黄色AV天堂| 最美孕交vivoestv另类| 日韩成人免费在线| 亚洲欧美日韩色图| 久草福利在线观看| 久久精品视频在线免费观看| 亚洲成人av无码| 在线播放JUY-925被丈夫上司侵犯的第7天 | 亚洲视频免费观看| 色丁香五月| 欧美一级在线免费观看| 欧美一二区| 成人免看一级a一片| 免费黄色片子| 亚洲网站视频| 國產美女AV操逼網站| 精品AAA| 亚洲无码色| www99热| 91美女操逼视频| 国产三级麻豆| 91在线超碰| 日本操鸡小视频| 欧美成人三级在线播放| 欧美成人网站在线| 日韩福利| 成人黃色A片免费看| 91狠狠综| 91豆花视频18| 日韩中文字幕一区二区| 亚洲爆乳无码一区二区三区| 天天干,夜夜操| 国产免费av在线观看| 国产香蕉在线视频| 久草视频免费| 永久免费不卡在线观看黄网站| 久久中文字幕人妻| 欧美成人在线网站| 日韩美女毛片| 91精品视频网| 午夜理论片| 51XX嘿嘿午夜| 午夜视频在线看| 国产偷拍网站| 8050午夜一级免费| 一个人看的视频www| www.污| 黄色A网站| 91超碰人人| 91精品综合| 天堂久久av| 一区二区无码精品| 日本无码人妻| YOUjiZZ欧美大全| 国产操逼大全| 人成视频在线观看| 日韩72页| 北条麻妃被躁57分钟视频在线| 欧美一卡二卡| 狠狠艹狠狠干| 国产一级片视频| 黄工厂精品视频在线播| 欧美成在线视频| 亚洲精品成人无码毛片| 久久激情国产| 国产videos| 亚洲精品视频无码| 老鸭窝久久久| 超碰9999| 亚洲视频免费观看| 99热精品免费观看| 亚洲精品无码久久久| 在线观看黄a| 中文字幕一区二区三区在线观看| 欧美三级视频在线观看| 伊人在线综合| 国产一级片在线| 国产欧美日韩| 二区三区视频| 一本色道久久88加勒比| 亚洲AV无码成人网站国产网站| 精品国产天线2024| 日本黄色视频在线| 欧美精品在线免费观看| 美女肏|