2022-12-06 10:21来源:m.sf1369.com作者:宇宇
将EXCEL表导入SQL表
医院在正式使用软件之前,需要将药品、收费项目等进行集中录入。这是一件基础工作,工作量大。如果能够先将药品、收费项目输入到EXCEL表中,再直接导入我们的软件,这样可以加快录入速度。
从EXCEL中导入数据到SQL中,操作步骤如下:
准备阶段(主要是为药品或者项目生成六位数的字母编码。):
首行,需要在EXCEL中增加一列,为药品生成编码。软件默认的编码格式为六位字母。1、人工录入完成的EXCEL表样式:
请将第一行中的编码、名称、处方单位等中文改成对应的拼音字母:
编码(bm)、药品名称(mc)、处方单位(dw)、整量单位(kxdw)、换算系数(xs)、规格(ggxh)、零售价(lsj)、药品分类(zxfl)
这时,编码(bm)列为空,在灵图医院软件中,药品的编码格式为六位字母,如AAAABA、AAAABB等,但如何能够按顺序生成这样的编码呢?操作步骤如下:
依次点工具-宏-visaul basic 编辑器,新弹出窗口如下:
在左边的对象上,右键,选择“导入文件…”,在文件选择路径中,找到医院软件目录中的bm.bas文件,确定。
这时,在“模块”下方将增加“自动编码”模块,
关掉本窗口,返回到EXCEL窗口
在表的A2单元格中输入编码:AAAABA
选中A3单元格,在上面的公式条中输入=GETNEXTBM(A2),回车确认,则A3单元格中的值自动生成为:AAAABB
选中A3单元格,往下拉,所有的编码将自动生成。
二、将EXCEL表导入SQL表
1、依次打开SQL的企业管理器-数据库-表,如图:
2、将光标放在数据库(如:lingtu)上,单击右键,选择所有任务-导入数据。弹开如下窗口:
3、按下一步,在弹开的窗口中选择正确的数据源。(注意:数据源选择为Microsoft Excel 97-2000)
点“下一步”,弹开目的文件夹窗口:
6、按下一步,选择用一条查询来指定需要传输的数据:
7、点:下一步,点查询生成器命令,弹开如下窗口:
8、选择左边的yp$,点向右的箭头,选中所需要还原的列。如图:
9、点下一步,不需要选择排序,继续下一步,直至出现下面的界面:
10、按下一步,这时出现如下界面:
注意:目的默认为“结果”,需要选择为“yp”表,表示这个EXCEL表还原到yp表。
11、点“下一步”,完成还原。
由于不能粘贴图片,相信你能够完成!加油!
1、Oracle11g默认对空表不分配segment,故使用exp导出Oracle11g数据库时,空表不会导出。
2、设置deferred_segment_creation 参数为FALSE后,无论是空表还是非空表,都分配segment。
在sqlplus中,执行如下命令:
SQL>alter system set deferred_segment_creation=false;
查看:
SQL>show parameter deferred_segment_creation;
该值设置后只对后面新增的表产生作用,对之前建立的空表不起作用。
3、可以使用手工为空表分配Extent的方式,来解决导出之前建立的空表的问题。说明如下:
3.1 使用ALLOCATE EXTENT的说明
使用ALLOCATE EXTENT可以为数据库对象分配Extent。其语法如下:
-----------
ALLOCATE EXTENT { SIZE integer [K | M] | DATAFILE 'filename' | INSTANCE integer }
-----------
可以针对数据表、索引、物化视图等手工分配Extent。
ALLOCATE EXTENT使用样例:
ALLOCATE EXTENT
ALLOCATE EXTENT(SIZE integer [K | M])
ALLOCATE EXTENT(DATAFILE 'filename')
ALLOCATE EXTENT(INSTANCE integer)
ALLOCATE EXTENT(SIZE integer [K | M] DATAFILE 'filename')
ALLOCATE EXTENT(SIZE integer [K | M] INSTANCE integer)
针对数据表操作的完整语法如下:
-----------
ALTER TABLE [schema.]table_name ALLOCATE EXTENT [({ SIZE integer [K | M] | DATAFILE 'filename' | INSTANCE integer})]
-----------
故,需要构建如下样子简单的SQL命令:
-----------
alter table aTabelName allocate extent
-----------
3.2 构建对空表分配空间的SQL命令,
查询当前用户下的所有空表(一个用户最好对应一个默认表空间)。命令如下:
-----------
SQL>select table_name from user_tables where NUM_ROWS=0;
-----------
根据上述查询,可以构建针对空表分配空间的命令语句,如下:
-----------
SQL>Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0
-----------
批量输出上述生成的SQL语句,建立C:\createsql.sql,其内容如下:
-----------
set heading off;
set echo off;
set feedback off;
set termout on;
spool C:\allocate.sql;
Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;
spool off;
-----------
执行C:\createsql.sql,命令如下:
-----------
SQL>@ C:\createsql.sql;
-----------
执行完毕后,得到C:\allocate.sql文件。
打开该文件会看到,已经得到对所有空表分配空间的命令SQL语句。
3.4 执行SQL命令,对空表分配空间:
执行C:\allocate.sql,命令如下:
-----------
SQL>@ C:\allocate.sql;
-----------
执行完毕,表已更改。
3.4 此时执行exp命令,即可把包括空表在内的所有表,正常导出。
另外:Oracle11g中,对密码是大小写敏感的,即密码中的字母是区分大小写的。
在Oracle10g中及以前,密码中的字母大小写无所谓。
有啊,比如when和then语句就可以实现批量更新语句
UPDATE table_own SET
cloumn_own= CASE id
WHEN 1 THEN 'a'
WHEN 2 THEN 'b'
WHEN 3 THEN 'c'
END
WHERE id IN (1,2,3);
这个批量更新语句的意思就是说,更新cloumn_own字段,如果id=1 则cloumn_own=a,如果id=2 则cloumn_own=b,如果id=3 则cloumn_own=c
记住,其实end 后面的where语句是不可必需的,但最好是带上
如果不加where条件,会使整个表的数据更新,不满足条件的对应的值会设置成默认值(导致你执行的前面n-1次都是无效,保留的是第n次)
带上where条件的话,就不会出现这种情况了
要使用Access2003以上的版本,比如将表table1中的content字段里的AA全部改成BB.操作如下:打开数据库后,查询--->在设计视图中创建查询,然后关闭弹出的窗口,点左上角工具栏的SQL输入:update table1 set content=replace(content,'AA','BB')最后点工具栏中的惊叹号来执行命令SQL语句说明:update [表名] set [字段名]=replace([字段名],'AA','BB')
什么叫批量更新一列记录? 是要一次性更新多条记录么,如果是这样的话只能逐条去些UPDATE语句。
不过可以把需要更新的所有数据全部存到excel表格里,然后用CONCATENATE函数去写SQL语句
以MySql为例:
现在需求是把sex为 ‘1’ 的数据的headpicture改为‘1.png’,sex为‘0’的数据的headpicture改为‘0.png’。
修改语句:
update t_user set t_user.headpicture= REPLACE (headpicture,'3','1.png') where t_user.sex='1';
这种方法适用于原headpicture字段值不为空的情况下。我的原数据是空,用这种方法还要先给headpicture赋值。
't_user'是表名,'headpicture'是要修改的字段名,replace(修改后的字段名,'被修改的内容','修改后的内容'),where后可以设置一些修改的前提条件。
总感觉上述方法比较笨,不应该这么复杂的,于是就找到了一个可以直接修改,无视空值的方法是:
update t_user set headpicture ='0.png' where sex ='0';
如果字段类型是字符型update 表名 set work_date='20170530' where work_date='20170524'表名自行替换
使用update更新修改数据库数据,更改的结果集是多条数据则为批量修改。语法格式如:update表格set列=更改值where筛选条件例:updatetableseta=1--将table中所以a列的值改为1updatetableseta=1whereb=2--将table中列b=2的记录中a列的值改为1
使用update 更新修改数据库数据,更改的结果集是多条数据则为批量修改。
语法格式如: update 表格 set 列 = 更改值 where 筛选条件 例: update table set a=1 --将table 中所以a列的值改为 1 update table set a=1 where b=2 --将table 中列b=2的记录中a列的值改为 1