老司机91精品网站在线观看-老司机67194免费观看-老司国产精品视频-老熟人老女人国产老太-中文字幕日本在线-中文字幕日本一区久久

始創(chuàng)于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊(cè)有禮 登錄
  • 掛牌上市企業(yè)
  • 60秒人工響應(yīng)
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補(bǔ)償
全部產(chǎn)品
您的位置: 網(wǎng)站首頁(yè) > 幫助中心>文章內(nèi)容

MySQL轉(zhuǎn)數(shù)據(jù)到Oracle

發(fā)布時(shí)間:  2012/8/23 16:43:24

一、首先從網(wǎng)絡(luò)上找到一些資料如下:
1. 自動(dòng)增長(zhǎng)的數(shù)據(jù)類型處理

MYSQL有自動(dòng)增長(zhǎng)的數(shù)據(jù)類型,插入記錄時(shí)不用操作此字段,會(huì)自動(dòng)獲得數(shù)據(jù)值。Oracle沒(méi)有自動(dòng)增長(zhǎng)的數(shù)據(jù)類型,需要建立一個(gè)自動(dòng)增長(zhǎng)的序列號(hào),插入記錄時(shí)要把序列號(hào)的下一個(gè)值賦于此字段。

CREATE SEQUENCE 序列號(hào)的名稱 (最好是表名+序列號(hào)標(biāo)記) INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE;
-
 

INSERT 語(yǔ)句插入這個(gè)字段值為: 序列號(hào)的名稱.NEXTVAL

2. 單引號(hào)的處理

MYSQL里可以用雙引號(hào)包起字符串,Oracle里只可以用單引號(hào)包起字符串。在插入和修改字符串前必須做單引號(hào)的替換:把所有出現(xiàn)的一個(gè)單引號(hào)替換成兩個(gè)單引號(hào)。當(dāng)然你如果使用 Convert Mysql to Oracle 工具就不用考慮這個(gè)問(wèn)題

3.長(zhǎng)字符串的處理

在Oracle中,INSERT和UPDATE時(shí)最大可操作的字符串長(zhǎng)度小于等于4000個(gè)單字節(jié), 如果要插入更長(zhǎng)的字符串, 請(qǐng)考慮字段用CLOB類型,方法借用ORACLE里自帶的DBMS_LOB程序包。插入修改記錄前一定要做進(jìn)行非空和長(zhǎng)度判斷,不能為空的字段值和超出長(zhǎng)度字段值都應(yīng)該提出警告,返回上次操作。

4. 翻頁(yè)的SQL語(yǔ)句的處理

MYSQL處理翻頁(yè)的SQL語(yǔ)句比較簡(jiǎn)單,用LIMIT 開始位置, 記錄個(gè)數(shù)。Oracle處理翻頁(yè)的SQL語(yǔ)句就比較繁瑣了。每個(gè)結(jié)果集只有一個(gè)ROWNUM字段標(biāo)明它的位置, 并且只能用ROWNUM<100, 不能用ROWNUM>80。

以下是經(jīng)過(guò)分析后較好的兩種Oracle翻頁(yè)SQL語(yǔ)句( ID是唯一關(guān)鍵字的字段名 ):

語(yǔ)句一:SELECT ID, [FIELD_NAME,...] FROM TABLE_NAME WHERE ID IN ( SELECT ID FROM (SELECT ROWNUM AS NUMROW, ID FROM TABLE_NAME WHERE 條件1 ORDER BY 條件2) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 條件3; 

語(yǔ)句二:SELECT * FROM (( SELECT ROWNUM AS NUMROW, c.* from (select [FIELD_NAME,...] FROM TABLE_NAME WHERE 條件1 ORDER BY 條件2) c) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 條件3;

5. 日期字段的處理

MYSQL日期字段分DATE和TIME兩種,Oracle日期字段只有DATE,包含年月日時(shí)分秒信息,用當(dāng)前數(shù)據(jù)庫(kù)的系統(tǒng)時(shí)間為SYSDATE, 精確到秒。

日期字段的數(shù)學(xué)運(yùn)算公式有很大的不同。MYSQL找到離當(dāng)前時(shí)間7天用 DATE_FIELD_NAME > SUBDATE(NOW(),INTERVAL 7 DAY)Oracle找到離當(dāng)前時(shí)間7天用 DATE_FIELD_NAME >SYSDATE - 7;

6. 字符串的模糊比較

MYSQL里用 字段名 like '%字符串%',Oracle里也可以用 字段名 like '%字符串%' 但這種方法不能使用索引, 速度不快,用字符串比較函數(shù) instr(字段名,'字符串')>0 會(huì)得到更精確的查找結(jié)果。

7. 空字符的處理

MYSQL的非空字段也有空的內(nèi)容,Oracle里定義了非空字段就不容許有空的內(nèi)容。按MYSQL的NOT NULL來(lái)定義ORACLE表結(jié)構(gòu), 導(dǎo)數(shù)據(jù)的時(shí)候會(huì)產(chǎn)生錯(cuò)誤。因此導(dǎo)數(shù)據(jù)時(shí)要對(duì)空字符進(jìn)行判斷,如果為NULL或空字符,需要把它改成一個(gè)空格的字符串。

以上內(nèi)容我作為參考。

二.工具的使用

網(wǎng)上好多朋友介紹使用Convert Mysql to Oracle這個(gè)工具,當(dāng)然能用工具解決的問(wèn)題我們就用工具,關(guān)鍵是看工具能不能解決問(wèn)題。通過(guò)工具會(huì)出現(xiàn)好多問(wèn)題,最終還是要自己寫程式解決。后來(lái)發(fā)現(xiàn)工具導(dǎo)數(shù)據(jù)還是可以的,數(shù)據(jù)表的創(chuàng)建和修改只有自己寫程式解決了。但是導(dǎo)數(shù)據(jù)也有問(wèn)題,如下:

導(dǎo)入數(shù)據(jù)遇到的問(wèn)題

1、text到blob的時(shí)候,這個(gè)是影響很大的,不是我們希望看到的,就不要做多說(shuō)明。

2、在Mysql中如果是Varchar或char中字符大小為2,意味著它可以輸入“12、中國(guó)、1中”等2個(gè)長(zhǎng)度的數(shù)據(jù),而在Oracle中是針對(duì)字節(jié)的,它只允許輸入英文字符2個(gè)或一個(gè)中文漢字,所以這變?cè)趯?dǎo)數(shù)據(jù)的時(shí)候要注意欄位的大小。

3、導(dǎo)入的過(guò)程中字符集必須要設(shè)置正確,否則會(huì)出現(xiàn)亂碼的數(shù)據(jù)。

4、index是不可以導(dǎo)進(jìn)來(lái)的,要注意table是否有Index;是否允許NULL值也要注意。

5、Mysql中id自動(dòng)增長(zhǎng)的table要做處理,在Oracle中設(shè)置相關(guān)的sequence和trigger。

6、comment在Oracle中是關(guān)鍵字,不能當(dāng)做列來(lái)處理。

7、當(dāng)數(shù)據(jù)量大的時(shí)候做特別處理。

三.自己寫程式解決問(wèn)題

//獲得所有table的名字

SELECT
  `TABLES`.`TABLE_SCHEMA`, `TABLES`.`TABLE_NAME` 
FROM
  `information_schema`.`TABLES`
WHERE
  `TABLES`.`TABLE_TYPE` = 'base table'
 and `TABLES`.`TABLE_SCHEMA`  ='netoffice';

//獲得某table所有列的信息

SELECT * FROM
  `information_schema`.`COLUMNS`

where `TABLE_SCHEMA`='netoffice'

and `TABLE_NAME`='drmcertification' order by `ORDINAL_POSITION`;

//java程式:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Vector;

public class TestMysql {
 public static Connection conn;
 public static Statement statement;
 public Hashtable<String, Vector<Vector<String>>> hashtable = new Hashtable<String, Vector<Vector<String>>>();
 public static final String filepathCreateTable = "D://CreateTable.txt";
 public static final String filepathCreateSequence = "D://CreateSequence.txt";
 public static final String filepathCreateTrigger = "D://CreateTrigger.txt";
 public static final String filepathCreatePrimarykey = "D://CreatePrimarykey.txt";
 public static final String filepathCreateIndex = "D://CreateIndex.txt";
 
 //只要修改主機(jī)名,數(shù)據(jù)庫(kù)名字和user、password
 public static final String DBdriver = "com.mysql.jdbc.Driver";
 public static final String DBURL = "jdbc:mysql://主機(jī)地址:3306/數(shù)據(jù)庫(kù)名字?user=roots&password=1234";
 public static final String DBSCHEMA = "數(shù)據(jù)庫(kù)名字"; //
   

 public static void main(String[] args) {
  new TestMysql();
 }

 public TestMysql() {
 
  //刪除文件
  deleteFile();
 
  if (!connectionMethod()) {
   System.out.println("鏈接錯(cuò)誤");
   return;
  }

  Vector<String> table = queryAllTable(DBSCHEMA);
  if (table.size() == 0) {
   System.out.println("沒(méi)有找到表");
   return;
  }

  for (int i = 0; i < table.size(); i++) { //得到數(shù)據(jù)
   hashtable.put(table.get(i), handle_table(table.get(i)));
  }
       
  // hashtable.put(table.get(0).toString(),handle_table(table.get(0)));
  System.out.println("操作正在進(jìn)行中,請(qǐng)耐心等待......");
  generatorString(hashtable); //產(chǎn)生字符串

  close();//關(guān)閉連接
  System.out.println("finish");
 }

 public void generatorString(Hashtable hashtable) {
  Iterator iter = hashtable.keySet().iterator();
  while (iter.hasNext()) {
   String tablescript = ""; // 創(chuàng)表語(yǔ)句
   String tablesequence = ""; // 建立sequence
   String tabletrigger = ""; // 建立trigger
   String tableprimarykey = "";// 建立主鍵
   String tableindex = "";// 建立索引
   String primarkeyColumn = "";
   String indexColumn = "";

   int primarykey = 0;
   int index = 0;

   String tablename = (String) iter.next();
   Vector valall = (Vector) hashtable.get(tablename);
   tablescript = "create table " + tablename + "(";
   for (int i = 0; i < valall.size(); i++) {
    Vector<String> val = (Vector) valall.get(i);
    String column_name = val.get(0).toString();// 列名
    String is_nullable = val.get(1).toString();// 是否為空,如果不允許NO,允許為YES
    String data_type = val.get(2).toString();// int,varchar,text,timestamp,date
    String character_maximun_length = val.get(3).toString();// 長(zhǎng)度大小
    String column_key = val.get(4).toString();// 是否主鍵 是的話為PRI
               // MUL(index)
               // 有兩個(gè)PRI說(shuō)明是複合index
    String extra = val.get(5).toString(); // 是否自動(dòng)增長(zhǎng)列 是的話
              // auto_increment
    String column_default = val.get(6).toString();// 是否有默認(rèn)值

    if (data_type.equals("varchar") || data_type.equals("char")) { // 驗(yàn)證是否有中文字符
     if (judge_china(tablename, column_name)) {
      character_maximun_length = Integer
        .parseInt(character_maximun_length)
        * 3 + "";
     }
    }

    tablescript = tablescript + column_name + " ";
    if (data_type.equals("int")) {
     tablescript = tablescript + "NUMBER" + " ";
    } else if (data_type.equals("mediumint")) {
     tablescript = tablescript + "NUMBER" + " ";
    } else if (data_type.equals("char")) {
     tablescript = tablescript + "varchar2("
       + character_maximun_length + ")" + " ";
    } else if (data_type.equals("varchar")) {
     tablescript = tablescript + "varchar2("
       + character_maximun_length + ")" + " ";
    } else if (data_type.equals("text")) {
     tablescript = tablescript + "varchar2(4000) ";
    } else if (data_type.equals("timestamp")) {
     tablescript = tablescript + "date" + " ";
    } else if (data_type.equals("date")) {
     tablescript = tablescript + "date" + " ";
    } else if (data_type.equals("float")) {
     tablescript = tablescript + "NUMBER" + " ";
    } else if (data_type.equals("longtext")) {
     tablescript = tablescript + "varchar2(4000) ";
    } else if (data_type.equals("smallint")) {
     tablescript = tablescript + "NUMBER" + " ";
    } else if (data_type.equals("double")) {
     tablescript = tablescript + "NUMBER" + " ";
    } else if (data_type.equals("datetime")) {
     tablescript = tablescript + "date" + " ";
    }

    if (column_default.length() > 0) { // 是否有默認(rèn)值
     if (column_default.equals("CURRENT_TIMESTAMP")) {
      tablescript = tablescript + "default sysdate" + " ";
     } else {
      tablescript = tablescript + "default " + column_default
        + " ";
     }
    }

    if (is_nullable.equals("NO")) { // 是否為空值
     tablescript = tablescript + "not null,";
    } else {
     tablescript = tablescript + ",";
    }

    if (extra.equals("auto_increment")) { // 是否自動(dòng)增長(zhǎng)列
     int maxid = get_maxId(tablename, column_name);
     tablesequence = "create sequence sq_" + tablename + " "
       + "minvalue " + maxid + " "
       + "maxvalue 9999999999999999 " + "increment by 1 "
       + "start with " + maxid + " " + "cache 20;";
     tabletrigger = "EXECUTE IMMEDIATE  'create trigger tr_"
       + tablename + " " + "before " + "insert on "
       + tablename + " for each row " + "begin "
       + "select sq_" + tablename + ".nextval into:new."
       + column_name + " from dual; " + "end;';";
    }

    if (column_key.length() > 0) {
     if (column_key.equals("PRI")) {
      primarykey++;
      primarkeyColumn = primarkeyColumn + column_name + ",";
     } else if (column_key.equals("MUL")) {
      index++;
      indexColumn = indexColumn + column_name + ",";
     }
    }

   }

   if (primarykey == 1) {
    primarkeyColumn = primarkeyColumn.substring(0, primarkeyColumn
      .length() - 1);
    String key = "pr_" + tablename + "_" + primarkeyColumn;
    if (key.length() > 30) {
     key = "pr_" + primarkeyColumn;
    }
    tableprimarykey = "alter table " + tablename
      + "  add constraint " + key + " primary key ("
      + primarkeyColumn + ");";
   } else {
    primarkeyColumn = primarkeyColumn.substring(0, primarkeyColumn
      .length() - 1);
    String indextemp = tablename + "_index";
    if (indextemp.length() > 30)
     indextemp = primarkeyColumn.replace(',', '_') + "_index";
    tableindex = "create index " + indextemp + " on " + tablename
      + " (" + primarkeyColumn + ");";
   }

   if (index > 0) {
    indexColumn = indexColumn
      .substring(0, indexColumn.length() - 1);
    String indextemp = tablename + "_index";
    if (indextemp.length() > 30)
     indextemp = indexColumn.replace(',', '_') + "_index";
    tableindex = "create index " + indextemp + " on " + tablename
      + " (" + indexColumn + ");";
   }

   tablescript = tablescript.substring(0, tablescript.length() - 1);
   tablescript = tablescript + ");";

   if (tablescript.length() > 0)
    write(filepathCreateTable, tablescript);
   if (tablesequence.length() > 0)
    write(filepathCreateSequence, tablesequence);
   if (tabletrigger.length() > 0)
    write(filepathCreateTrigger, tabletrigger);
   if (tableprimarykey.length() > 0)
    write(filepathCreatePrimarykey, tableprimarykey);
   if (tableindex.length() > 0)
    write(filepathCreateIndex, tableindex);

  }

 }

 public void close() {
  try {
   statement.close();
   conn.close();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

 public Vector<Vector<String>> handle_table(String tablename) {
  Vector<Vector<String>> arg = new Vector<Vector<String>>();
  try {
   String queryDetail = "SELECT * "
     + "FROM `information_schema`.`COLUMNS` "
     + "where `TABLE_SCHEMA`='" + DBSCHEMA + "' "
     + "and `TABLE_NAME`='" + tablename + "' "
     + "order by `ORDINAL_POSITION`";
   // System.out.println("sql= "+queryDetail);
   ResultSet rst = statement.executeQuery(queryDetail);

   while (rst.next()) {
    Vector<String> vec = new Vector<String>();
    String column_name = NulltoSpace(rst.getString("COLUMN_NAME"));// 列名
    String is_nullable = NulltoSpace(rst.getString("IS_NULLABLE"));// 是否為空,如果不允許NO,允許為YES
    String data_type = NulltoSpace(rst.getString("DATA_TYPE"));// int,varchar,text,timestamp,date
    String character_maximun_length = NulltoSpace(rst
      .getString("CHARACTER_MAXIMUM_LENGTH"));// 長(zhǎng)度大小
    String column_key = NulltoSpace(rst.getString("COLUMN_KEY"));// 是否主鍵
                    // 是的話為PRI
                    // MUL(index)
                    // 有兩個(gè)PRI說(shuō)明是複合index
    String extra = NulltoSpace(rst.getString("EXTRA")); // 是否自動(dòng)增長(zhǎng)列
                 // 是的話
                 // auto_increment
    String column_default = NulltoSpace(rst
      .getString("COLUMN_DEFAULT"));// 是否有默認(rèn)值
    vec.add(column_name);
    vec.add(is_nullable);
    vec.add(data_type);
    vec.add(character_maximun_length);
    vec.add(column_key);
    vec.add(extra);
    vec.add(column_default);
    arg.add(vec);
   }
   rst.close();
  } catch (SQLException e) {
   e.printStackTrace();
  }

  return arg;
 }

 public boolean judge_china(String tablename, String columnname) {
  try {
   String querysql = "select count(1) row from " + tablename
     + " where length(" + columnname + ")!=char_length("
     + columnname + ")";
   // System.out.println("sql= "+querysql);
   ResultSet rst = statement.executeQuery(querysql);
   if (rst.next()) {
    if (NulltoSpace(rst.getString("row")).equals("0")) {
     return false;
    } else {
     return true;
    }
   }
    rst.close();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
  }
  return true;
 }

 public int get_maxId(String tablename, String columnname) {
  String maxValue = "0";
  try {
   String querysql = "select max(" + columnname + ") maxid from "
     + tablename;
   // System.out.println("sql= "+querysql);
   ResultSet rst = statement.executeQuery(querysql);
   if (rst.next()) {
    maxValue = NulltoSpace(rst.getString("maxid"));
   }
    rst.close();
  } catch (SQLException e) {
  }
  return Integer.parseInt(maxValue + 1);
 }

 public Vector<String> queryAllTable(String table_schema) {
  Vector<String> tableName = new Vector<String>();
  try {
   String queryTable = "SELECT `TABLES`.`TABLE_NAME` "
     + "FROM `information_schema`.`TABLES` "
     + "WHERE `TABLES`.`TABLE_TYPE` = 'base table' "
     + "and `TABLES`.`TABLE_SCHEMA`  ='" + table_schema + "'";
   // System.out.println("sql= "+queryTable);
   ResultSet rst = statement.executeQuery(queryTable);
   while (rst.next()) {
    tableName.add(NulltoSpace(rst.getString("TABLE_NAME")));
   }
  } catch (SQLException e) {
   // TODO Auto-generated catch block
  }
  return tableName;
 }

 public boolean connectionMethod() {
  try {
   Class.forName(DBdriver).newInstance();
   conn = DriverManager.getConnection(DBURL);
   statement = conn.createStatement();
   return true;
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   return false;
  }
 }

 public static String NulltoSpace(Object o) {
  if (o == null)
   return "";
  else if (o.equals("null")) {
   return "";
  } else {
   return o.toString().trim();
  }
 }

 public static void deleteFile(){
  File f;
  f= new File(filepathCreateTable);
  if(f.exists()) f.delete();
  f= new File(filepathCreatePrimarykey);
  if(f.exists()) f.delete();
  f= new File(filepathCreateSequence);
  if(f.exists()) f.delete();
  f= new File(filepathCreateTrigger);
  if(f.exists()) f.delete();
  f= new File(filepathCreateIndex);
  if(f.exists()) f.delete();
 }
 
 public static void write(String path, String content) {
  String s = new String();
  String s1 = new String();
  try {
   File f = new File(path);
   if (f.exists()) {
   } else {
       f.createNewFile();
   }
   BufferedReader input = new BufferedReader(new FileReader(f));

   while ((s = input.readLine()) != null) {
    s1 += s + "\r\n";
   }
   input.close();
   s1 += content;

   BufferedWriter output = new BufferedWriter(new FileWriter(f));
   output.write(s1);
   output.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

}


本文出自:億恩科技【www.ypdoo.com.cn】

服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經(jīng)營(yíng)性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經(jīng)營(yíng)性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經(jīng)營(yíng)性ICP/ISP證:贛B2-20080012
  • 服務(wù)器/云主機(jī) 24小時(shí)售后服務(wù)電話:0371-60135900
  • 虛擬主機(jī)/智能建站 24小時(shí)售后服務(wù)電話:0371-60135900
  • 專注服務(wù)器托管17年
    掃掃關(guān)注-微信公眾號(hào)
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權(quán)所有  地址:鄭州市高新區(qū)翠竹街1號(hào)總部企業(yè)基地億恩大廈  法律顧問(wèn):河南亞太人律師事務(wù)所郝建鋒、杜慧月律師   京公網(wǎng)安備41019702002023號(hào)
      0
     
     
     
     

    0371-60135900
    7*24小時(shí)客服服務(wù)熱線

     
     
    久久国产影视免费精品| 欧美另类videosbestsex久久| 久久精品免视看国产成人2021| 久久久成人影院| 国产91精品一区| 国产精品1024永久免费视频 | 天天做人人爱夜夜爽2020| 国产一级强片在线观看| 精品在线免费播放| 久久国产影视免费精品| 国产伦久视频免费观看视频| 99久久精品国产高清一区二区 | 黄视频网站免费看| 二级特黄绝大片免费视频大片| 黄视频网站免费看| 二级特黄绝大片免费视频大片| 国产麻豆精品免费密入口| 国产网站免费在线观看| 四虎影视库国产精品一区| 国产麻豆精品视频| 亚洲不卡一区二区三区在线 | 成人a大片在线观看| 久久福利影视| 国产成人精品在线| 91麻豆精品国产片在线观看| 天天色成人| 久久99中文字幕| 精品国产一区二区三区精东影业| 国产精品自拍在线观看| 日韩av东京社区男人的天堂| 午夜激情视频在线观看| 黄色免费三级| 天天做日日干| 国产不卡高清在线观看视频| 亚洲精品中文字幕久久久久久| 亚洲爆爽| 日韩中文字幕在线播放| 日本乱中文字幕系列| 午夜家庭影院| 韩国三级一区| 欧美国产日韩久久久| 色综合久久久久综合体桃花网| 欧美激情一区二区三区视频 | 免费毛片播放| 尤物视频网站在线观看| 久久福利影视| 国产视频一区二区三区四区| 亚洲天堂免费观看| 国产视频一区二区在线观看| 色综合久久天天综合观看| 精品在线视频播放| 成人免费观看的视频黄页| 国产精品免费久久| 日韩av成人| 欧美日本韩国| 欧美国产日韩一区二区三区| 天天做人人爱夜夜爽2020毛片| 成人高清视频免费观看| 高清一级做a爱过程不卡视频| 国产伦理精品| 日本特黄一级| 99色视频在线| 一级毛片视频免费| 青青青草影院| 亚洲精品中文一区不卡| 尤物视频网站在线观看| 国产视频一区二区在线播放| 青青久久精品| 成人影院一区二区三区| 国产91丝袜在线播放0| 精品视频在线观看视频免费视频| 久久99青青久久99久久| 午夜在线影院| 国产视频一区二区在线播放| 欧美国产日韩久久久| 免费国产在线视频| 超级乱淫伦动漫| 亚洲精品影院| 精品国产一区二区三区久| 久久国产精品只做精品| 国产一区二区精品久久| 国产视频网站在线观看| 国产精品123| 国产不卡精品一区二区三区| 91麻豆高清国产在线播放| 国产网站免费视频| 久草免费在线观看| 一级女性全黄久久生活片| 欧美激情一区二区三区视频| 国产a免费观看| a级毛片免费全部播放| 欧美日本二区| 精品国产香蕉在线播出| 国产激情一区二区三区| 成人高清视频在线观看| 国产a网| 中文字幕一区二区三区 精品| 九九干| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 精品视频一区二区三区免费| 一级女性全黄生活片免费| 91麻豆国产级在线| 精品国产亚一区二区三区| 欧美日本二区| 国产国产人免费视频成69堂| 毛片高清| 国产网站麻豆精品视频| 国产视频一区二区三区四区| 亚洲精品影院| 你懂的福利视频| 国产麻豆精品高清在线播放| 国产a免费观看| 国产极品精频在线观看| 亚洲爆爽| 国产麻豆精品hdvideoss| 成人a级高清视频在线观看| 精品视频在线看| 国产福利免费视频| 国产视频一区二区三区四区| 国产极品白嫩美女在线观看看| 日韩在线观看视频网站| 国产一区二区高清视频| 国产一区二区精品久久| 日韩在线观看免费| 99热精品在线| 国产高清在线精品一区二区| 久草免费在线色站| 国产精品免费久久| 91麻豆tv| 日韩一级黄色片| 日本在线www| 精品美女| 精品久久久久久影院免费| 91麻豆国产福利精品| 国产a视频| 日日夜人人澡人人澡人人看免| 午夜在线亚洲| 成人高清免费| 精品国产三级a∨在线观看| 欧美电影免费| 天天做日日爱夜夜爽| 欧美国产日韩久久久| 亚洲女人国产香蕉久久精品| 成人a级高清视频在线观看| 精品国产一区二区三区国产馆| 可以免费看毛片的网站| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 九九免费精品视频| 精品国产亚洲人成在线| 午夜家庭影院| 超级乱淫黄漫画免费| 精品国产一区二区三区精东影业| 精品久久久久久综合网| 亚洲精品久久久中文字| 一级女性大黄生活片免费| 精品视频免费看| 毛片成人永久免费视频| 日韩专区第一页| 国产亚洲精品aaa大片| 亚洲精品永久一区| 九九久久99| 日韩专区亚洲综合久久| 一级女人毛片人一女人| 日韩中文字幕一区二区不卡| 国产一区二区精品在线观看| 久久国产精品自线拍免费| a级精品九九九大片免费看| 欧美日本二区| 精品国产一区二区三区久久久蜜臀| 九九干| 你懂的福利视频| 久久成人亚洲| 欧美国产日韩一区二区三区| 精品视频一区二区三区免费| 国产精品自拍在线观看| 九九九在线视频| 亚洲 欧美 91| 精品视频在线观看免费| 亚洲爆爽| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 久草免费在线视频| 日本在线不卡免费视频一区| 一级女性全黄生活片免费| 人人干人人草| 毛片电影网| 国产美女在线一区二区三区| 国产不卡精品一区二区三区| 国产麻豆精品hdvideoss| 久久精品免视看国产成人2021| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产不卡在线看| 日韩av片免费播放| 日韩免费在线观看视频| 四虎影视库| 中文字幕97| 亚洲精品永久一区| 黄色免费网站在线| 欧美另类videosbestsex| 成人高清视频在线观看| 色综合久久手机在线|