精华内容
下载资源
问答
  • 哈希表中,实值的存储位置由其键值对应的哈希函数值决定。因此, 存储哈希表中的值是无序的。哈希表中插入元素和查找元素的时间复杂度都是O(1)。 (假设冲突很少)。实现一个哈希表,冲突处理是必须要考虑的。 ...

    对比哈希表和STL map

    在哈希表中,实值的存储位置由其键值对应的哈希函数值决定。因此, 存储在哈希表中的值是无序的。在哈希表中插入元素和查找元素的时间复杂度都是O(1)。 (假设冲突很少)。实现一个哈希表,冲突处理是必须要考虑的。

    对于STL中的map,键/值对在其中是根据键进行排序的。它使用一根红黑树来保存数据, 因此插入和查找元素的时间复杂度都是O(logn)。而且不需要处理冲突问题。 STL中的map适合以下情况使用:

    1. 查找最小元素

    2. 查找最大元素

    3. 有序地输出元素

    4. 查找某个元素,或是当元素找不到时,查找比它大的最小元素

    哈希表是怎么实现的

    1. 首先需要一个好的哈希函数来确保哈希值是均匀分布的。比如:对大质数取模

    2. 其次需要一个好的冲突解决方法:链表法(chaining,表中元素比较密集时用此法), 探测法(probing,开放地址法,表中元素比较稀疏时用此法)。

    3. 动态地增加或减少哈希表的大小。比如,(表中元素数量)/(表大小)大于一个阈值时, 就增加哈希表的大小。我们新建一个大的哈希表,然后将旧表中的元素值, 通过新的哈希函数映射到新表。

    如果输入数据规模不大,我们可以使用什么数据结构来代替哈希表。

    你可以使用STL map来代替哈希表,尽管插入和查找元素的时间复杂度是O(logn), 但由于输入数据的规模不大,因此这点时间差别可以忽略不计。


    展开全文
  • 写一个程序,其中要求用户输入数据库的账号密码:![图片说明](https://img-ask.csdn.net/upload/201503/12/1426161478_25484.png) 密码正确则可以对数据库进行从操作(如导出数据增删改等等……) 问题是,获取...
  • 早上突然让我做个A添加个字段,然后该字段的内容是A的FEATURE_LIST字段前4个年份不变,后面每4个去查询B的对应数据后把中文做拼接,比如20093A176ASA变成2009;中国;灰色;.....这样的格式的内容,请问这个...
  • 初学数据库,很多小白就会发现自己的数据表总是对不齐: 怎么对齐? 只需要输入时:**charset gbk;**就ok了。 简单易操作,别问我怎么知道的,百度是个好东西。 此外,还有一个问题就是:怎么把中文正常显示?...

    初学数据库,很多小白就会发现自己的数据表总是对不齐:
    在这里插入图片描述

    怎么对齐?
    只需要输入时:charset gbk;就ok了。
    在这里插入图片描述
    简单易操作,别问我怎么知道的,百度是个好东西。

    此外,还有一个问题就是:怎么把中文正常显示?(一般会显示乱码)
    在这里插入图片描述
    输入:set names gbk;就可以了。
    在这里插入图片描述
    再查询数据表:
    在这里插入图片描述

    展开全文
  • 一个记录日志的数据库,日增量巨大,需要将进行分表,但查询的时候怎么办呢,那就联合查询,输入一个时间段,这个时间段内找到相关联的,用union all的方式将这些数据一起后,再进行查询。 还有这样的...

    需求场景:

    一个记录日志的数据库,日增量巨大,需要将表进行分表,但查询的时候怎么办呢,那就联合查询,输入一个时间段,在这个时间段内找到相关联的表,用union all的方式将这些表的数据合在一起后,再进行查询。

    还有这样的需求:需要对日志进行统计,我怎么知道你想怎么统计呢,你有N种统计方法,还要导出到文件,看来不能写死啊,万一哪你想改,不累死我啊,那就将统计方法分离出来吧,把它写成sql文件,这里你想怎么统计就怎么统计,我只管执行sql,并进行分表查询,唉,你哪会写sql啊,还不是让哥来写。


    一。首先,建个存储过程,它的作用是,将单表查询的sql转化为分表查询sql,并执行

    CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_tablepart_query`(IN `fromTime` varchar(20),IN `toTime` varchar(20),IN `prefix` varchar(50),IN `sqlModule` LONGTEXT,IN `databaseName` varchar(50))
    BEGIN
    DECLARE tableName varchar(50);
    DECLARE querySQL LONGTEXT;
    DECLARE T int;
    DECLARE lastTableTime VARCHAR(20);
    DECLARE ttt VARCHAR(1000);
    
    DECLARE _Cur CURSOR FOR  
    	SELECT case TABLE_NAME 
    		when prefix then CONCAT(prefix, now()) 
    		else TABLE_NAME 
    		end as table_time, TABLE_NAME
    
    FROM information_schema.TABLES where TABLE_NAME like concat(prefix,'%') AND TABLE_SCHEMA=databaseName order by table_time asc;
    
    set querySQL = '';
    set lastTableTime = '';
    
    SELECT count(1) into T FROM information_schema.TABLES where TABLE_NAME like concat(prefix,'%') AND TABLE_SCHEMA=databaseName order by TABLE_NAME ASC;
    set @FirstAdd = TRUE;
     open _Cur;
    REPEAT
    	FETCH _Cur INTO ttt,tableName;
    		set @tmp = REPLACE(tableName, prefix, '');
    		if LENGTH(@tmp) < 1 THEN
    			set @tmp = now();
    		end if;
    		set @isAdd = 0;
    		if toTime<= lastTableTime THEN
    			#包括这张表,加入sql语句查询
    			#set @sql = concat('a---', tableName);
    			#select @sql;
    			set @isAdd = 0;
    		elseif fromTime > @tmp THEN
    			set @isAdd = 0;
    		else
    			set @isAdd = 1;
    		end if;
    		set lastTableTime = @tmp;
    		if @isAdd = 1 THEN
    			if @FirstAdd then
    				set querySQL = CONCAT(querySQL,'(select * from `', tableName ,'`)');
    			ELSE
    				set querySQL = CONCAT(querySQL,' union all (select * from `', tableName ,'`)');
    			end if;
    			set @FirstAdd = FALSE;
    		end if;
    set T = T -1;
    UNTIL T=0 end REPEAT;
    CLOSE _Cur;
    
    #select querySQL;
    #set @alias = 'alias_name';
    #set sqlModule = replace(sqlModule,concat(prefix,'.'),concat(@alias,'.') );
    #set querySQL = replace(sqlModule, prefix, concat('(',querySQL,') as ',@alias));
    set querySQL = replace(sqlModule, prefix, concat('(',querySQL,')'));
    #select querySQL;
    #set querySQL = concat('select * from (',querySQL,') t');
    set @quer = querySQL;
    prepare stmt from @quer;
    EXECUTE stmt;      #执行SQL语句
    deallocate prepare stmt;     #释放掉预处理段
    END
    参数解释:

    fromTime与toTime: 查询时间段,存储过程会根据这个时间段来查找哪些分表符合查询条件。

    prefix: 表名的前缀,分表的表名格式为prefix2000-01-01 00:00:00,意思是这个表里的数据是2000-01-01 00:00:00以前的;如果还有更前以前的分表,则就在最近的上一个分表时间到这个时间之间,唉,好复杂,我都晕了。

    sqlModule:单表查询的sql语句

    databaseName:数据库名称


    存储过程分析:

    首先,查询分表数量

    SELECT count(1) into T FROM information_schema.TABLES where TABLE_NAME like concat(prefix,'%') AND TABLE_SCHEMA=databaseName;

    其次,声明游标,查询分表名称并根据时间排序,排升序,将当前表排到最后

    DECLARE _Cur CURSOR FOR  
    	SELECT case TABLE_NAME 
    		when prefix then CONCAT(prefix, now()) 
    		else TABLE_NAME 
    		end as table_time, TABLE_NAME
    
    FROM information_schema.TABLES where TABLE_NAME like concat(prefix,'%') AND TABLE_SCHEMA=databaseName order by table_time asc;

    然后,遍历游标,组装动态sql

     open _Cur;
    REPEAT
    	FETCH _Cur INTO ttt,tableName;
    		set @tmp = REPLACE(tableName, prefix, '');
    		if LENGTH(@tmp) < 1 THEN
    			set @tmp = now();
    		end if;
    		set @isAdd = 0;
    		if toTime<= lastTableTime THEN
    			#包括这张表,加入sql语句查询
    			#set @sql = concat('a---', tableName);
    			#select @sql;
    			set @isAdd = 0;
    		elseif fromTime > @tmp THEN
    			set @isAdd = 0;
    		else
    			set @isAdd = 1;
    		end if;
    		set lastTableTime = @tmp;
    		if @isAdd = 1 THEN
    			if @FirstAdd then
    				set querySQL = CONCAT(querySQL,'(select * from `', tableName ,'`)');
    			ELSE
    				set querySQL = CONCAT(querySQL,' union all (select * from `', tableName ,'`)');
    			end if;
    			set @FirstAdd = FALSE;
    		end if;
    set T = T -1;
    UNTIL T=0 end REPEAT;
    CLOSE _Cur;
    

    若传入的sql 是select * from A,则组装后的sql为

    select * from ((select * from A1) union all (select * from A2)) as ddd

    最后,执行动态sql


    set querySQL = replace(sqlModule, prefix, concat('(',querySQL,')'));
    #select querySQL;
    #set querySQL = concat('select * from (',querySQL,') t');
    set @quer = querySQL;
    prepare stmt from @quer;
    EXECUTE stmt;      #执行SQL语句
    deallocate prepare stmt;     #释放掉预处理段
    END

    二。建立java项目,读取sql文件和主要参数,并调用存储过程

    代码就没必要贴了,用的mybatis做持久层,将查询的数据写入到文件,两种格式写入,txt,与excel(poi插件)


    数据库分表应该有很多应用了,技术也应该很成熟了,但却找不到这方面的框架,我的这种实现方式感觉不好,但作为内部人员使用已经足够了。

    展开全文
  • 教你怎么样把Excel 文件数据导入到Oracle 数据库   第一种:最简单的方法。 EXCEL全选数据,然后COPY。接着打开PL/SQL DEVELOPER,打开SQL窗口,输入select * from mytable for update; 然后执行,就...

    教你怎么样把Excel 文件中的数据导入到Oracle 数据库中 

     第一种:最简单的方法。   在EXCEL中全选数据,然后COPY。接着打开PL/SQL DEVELOPER,打开SQL窗口,输入select * from mytable for update; 然后执行,就可以看到查出目的表mytable数据,如果是空表,当然是没数据了。然后点击下面列表上方的锁(编辑数据),不管有没有数据,我们选择最后一个空行的行头,让整行变成黑色则表示整行已全选中。注意该行左边是有个黑色实心三角箭头的。然后粘贴,再commit 就OK咯。  说明:而且这个方法还有个好处就是对EXCEL中的日期型、数值型字段的处理也很正常,数据类型不会丢失。

    第二种:简单的方法。 
      先将Excel文件另存为一个 .csv 文件,然后编写一个 insert.ctl文件,ctl文件写法如下: load data               --1、控制文件标识 infile 'test.csv'                   

    --2、要输入的数据文件名为test.csv append into table table_name          

     --3、向表table_name中追加记录 fields terminated by ','                   

    -4、字段终止于',',是一个逗号 (field1,  field2,  field3,  ... fieldn)-----定义列对应顺序 

    field(x)要与Oracle表中的字段名保持一致(大写) 最后在DOS命令下执行以下命令: sqlldr user/password control=insert.ctl

    第三种:比较简单的方法。 
         如果数据不是很多,可以使用如下方法: 
    假设表名为test_excel,有4列数据,则设置Excel的E1单元格的值为 
    ="insert into test_excel values(„” & A1 & “‟, „” & B1 & “‟, „” & C1 & “‟, „” & D1 & “‟);” 
    向下拖动该公式,则生成一列sql,把其copy到sql/plus中执行即可(如果数据中有单引号,需要先替换成两个),临时导数据用这种方法还是比较方便的。

    使用过的数据。

    ="insert into t_gateway_comcode (id, citycode, cityname, comcode, regioncode) values(S_GATEWAY_COMCODE_ID.nextval,'" & B2 & "','" & A2 & "', '"& C2 & "', '" & D2 & "');"



    第三种:比较简单的方法。 
         如果数据不是很多,可以使用如下方法: 
    假设表名为test_excel,有4列数据,则设置Excel的E1单元格的值为 
    ="insert into test_excel values(„” & A1 & “‟, „” & B1 & “‟, „” & C1 & “‟, „” & D1 & “‟);” 
    向下拖动该公式,则生成一列sql,把其copy到sql/plus中执行即可(如果数据中有单引号,需要先替换成两个),临时导数据用这种方法还是比较方便的。

    展开全文
  • 将文件存盘,重新打开就会有了数据,你可以将字段拖入数据透视表中,创建你自己的数据透视表, 2、6 这样文件就可以使用,相信VBA的引导不用教就可以交给别人使用了 下面附上代码,包含3个区: 1、 工作簿去,打开...
  • 2、用函数实现顺序表中查找其中一个元素,如果找到,返回该元素顺序表中的位置和该元素的值,否则提示无此元素。 3、用函数实现顺序表的插入和删除操作。由用户输入待插入元素及插入位置,将完成插入后的顺序表...
  • # 传入的数组必须具有相同的形状,这里的相同的形状可以满足拼接方向axis轴上数组间的形状一致即可 X_test = np.concatenate([x_test, x_test[idx]], 1) #(x_train.shape[0], img_rows, img_cols, 1)==》[x_train...
  • 怎么把excel表中数据自动输入到网页中因要给员工网上投工伤保险,员工资料excel表中,现在网上投保险时只能一笔笔的复杂粘贴到网页中,有没有办法能直接把excel表中的资料自动输入到网页中的对应的表格中呢?...
  • query中的某个字段和在表中显示的不是一个值,我觉得很奇怪,于是找了很久,才知道为什么,原来是query中的OnSetText和onGetText事件作怪,经过一番学习,我终于知道了这两个事件怎么用。  OnSetText、...
  • 教你怎么样把 Excel 文件数据导入到 Oracle 数据库 第一种最简单的方法 EXCEL 全选数据然后 COPY 接着打开PL/SQL DEVELOPER 打开 SQL 窗口 输入 select * from mytable for update; 然后执行就可以看到...
  • 教你怎么样把 Excel 文件数据导入到 Oracle 数据库 第一种最简单的方法 EXCEL 全选数据然后 COPY 接着打开 PL/SQL DEVELOPER 打开 SQL 窗口 输入 select * from mytable for update; 然后执行就可以看到...
  • 一个 swing.JTable 的,各单元的值可以修改 一个 Button  按 Button 后 jTable 内值赋给一个数组   问题 :修改jTable 的一个单元格后直接按Button, 这个单元的值没有赋给数组。  但是如果修改...
  • 我创建了两个空的链表link1和link2,我想同时控制台给这两个队列添加数据,但是每次添加的时候都只会进到第一个link1,如果按ctrl+z就直接停止了而不会执行下一个输入指令,请问这代码应该怎么改或者怎么写?...
  • 老师教我们写了一个动态链表,但我想把功能扩展一下,能够调用里面的数据,不但怎么会。 我希望能用一个数组存放每个结构体的头地址,然后指定第n个学生成绩时,能通过数组存放的头地址来输出对应存放的一组...
  • Excel跨查询关联数据

    千次阅读 2008-04-22 23:01:00
    EXCEL 两个有相同的数据怎么选择使用A有学生的姓名等信息,B有部分学生的部分信息,怎么B的信息快速的填入A,学生数大于2000人.. 要用比较快的方法,时间很紧...假设你要AAB列分别为姓名和信息(为空,...
  • 那么怎么把生成的数据插入到目标表中?并且构建目标表的结构呢? 目标表结构就【表输出】栏位 点击【SQL】,就可以看见生成目标表结构的脚本 转载于:...
  • 我们使用Excel制作表格整理数据的时候,常常要用到它的函数功能来自动统计处理表格数据。这里整理了Excel使用频率最高的函数的功能、使用方法,以及这些函数实际应用的实例剖析,并配有详细的介绍。 ...
  • 怎么将下面汇总表中数据,按分类(寄达省)拆分为单个工作表,并用分类名称(寄达省名称)命名工作表。 汇总表数据 (文章最后有超级处理器的下载地址,可以下载下来同步操作) 只需要点点鼠标,四步完成:①...
  • 但是Excel中怎么做呢,我又不想每次都数据导入到数据库操作。 这就是Excelvlookup函数的作用。 使用方法: Excel的一列 输入“=vlookup “,这样会提升这个函数要输入的几个参数 1、查找值 -...
  • 有以下信息管理程序,不知怎么才能把数据写入文件再读取?这个经测试应该可以写入,但重启读取时出错或不能读取。手机测试快一星期了 #include #include #include #include #define MAXSIZE 1000 #define OVERFLOW -...
  • //将文件的数据输入到链表 n=1; } if(fclose(fp)) //关闭文件 { printf("文件关闭失败"); exit(0); } return file; } void FilePrint(gradelist file) //将成绩文件打印到屏幕上 { student *p=file; ...
  • //指定位置插入数据 void InsertList(List* head, int n) {<!-- -->  List* p = head;  if (n<0 || n>getLength(head)) {<!-- -->  cout << "输入错误" <&...
  • sql server数据库用户输入一些字段信息,其中的某个字段向a插入,有些字段向b插入,有些字段向c插入数据。 例如: 用户输入8个字段,3个字段信息插入到a,2个字段信息插入到b, 剩下2个字段插入到...
  • config.ini文件中输入MySQL凭据。 运行json_to_mysql.py并输入要使用的数据库名称或创建数据库。 这个怎么运作 get_data.py 从代码中的给定链接获取json格式数据。 您可以get_data.py中输入链接。 create_...
  • EEPROM存储数据的字节序

    千次阅读 2018-08-13 14:45:10
    最近做仪表的时候,发现仪表EEPROM存放的指针式输入输出校验数据有问题,和软件的校验信息存在差别,就打算去改下,因为之前有老前辈已经教过怎么去改了。但是当时没明白为什么这么去改,今天空闲静下来...
  • 怎么样保证数据的完整性

    千次阅读 2009-09-15 20:21:00
    一 完整性包括: 1. 实体完整性 数据行不能存在重复,否则为冗余数据 2. 域完整性 对输入到特定... 引用完整性(即参照完整性Reference) 要求子表中的相关项必须表中存在 如果建立了主表和子表的关系,
  • 场景设置:写一个WinForm程序,假如某... 这是我项目遇到的问题,问题说大可不大,但是还可能隐藏着很多bug:(1)数据库这个字段类型应该怎么设置?能保存输入的值能正确存储,不出现值太大或太小等异常。(2)从

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 533
精华内容 213
关键字:

怎么在数据表中输入数据