informix中怎么导入表结构

informix中怎么导入表结构,第1张

1、导出数据库中一个表的结构到文件testsql

[informix@localhost ~]$ dbschema -d your_database_name -t your_table_name testsql

your_database_name:数据库名(sysadmin)

your_table_name:表名(test)

[informix@localhost ~]$ dbschema -d sysadmin -t test testsql

2、导出表中的数据

用dbaccess命令进入informix *** 作数据库 *** 作界面,选择需要从中导出数据的库(sysadmin),输入下面sql 语句:

unload to 'testdmp' select from table;

3、执行testsql脚本,在zengxing数据库创建表

[informix@localhost ~]$ dbaccess zengxing testsql > importlog &

(重定向输出 > importlog,视乎没什么效果, & 后台执行)

4、导入表数据

用dbaccess命令进入informix *** 作数据库 *** 作界面,选择需要往里导入数据的库(zengxing),输入下面sql 语句:

load from 'testdmp' insert into test;

给定查询的不同执行策略可能会有不同的代价,构造具有最小查询执行代价的查询执行计划是数据库系统的职责。查询优化是为了查询选择最有效的查询策略的过程。查询优化是尽量找出与给定表达式等价的、但是执行效率更高的一个表达式,而且决定执行运算时所采用的具体算法以及将使用的特定索引等。

为了在诸多查询策略中作出选择,数据库系统的优化器必须估计每个查询策略的代价,磁盘访问次数常常是衡量代价的主要标准。在没有按照某策略执行查询前,准确计算出该策略的代价是不可能的,所以,优化器要利用数据库系统中的统计信息,来估计查询策略的代价。Informix数据库系统这些统计信息保存在SYSMASTER数据库中, 如果要维护准确的统计值,那么每当表数据修改时,相应的统计值也必须更新,这种更新会带来很大的代价,因此Informix系统不是在每次修改时对统计值更新。因此,用于选择查询策略的统计数据不一定完全正确,有时会遇到查询用不到应该使用的索引,就是统计信息没有更新的原因。 对Informix数据库系统,这些统计信息保存在SYSMASTER数据库中,可以使用UPDATE STATISTICS命令更新。

以下是用于估计代价的信息:

记录数

表空间的页数

记录长度

字段不同值个数

字段值的分布

索引的层数

索引叶结点数目

索引B+树的深度

索引是升序还是降序或聚类索引

索引占用的页面数目

Informix 数据库服务器中的优化器为SQL语句的查询提供最有效的策略,这就使得你在进行表的连接查询时不必全面考虑究竟那个表首先搜索,以及究竟需要使用那个索引。

通过执行update statistics命令可以更新系统的统计信息,使得优化器得到当前最新的统计信息。

当修改或删除一个表的相关数据时,系统的统计信息并不自动更新。比如:如果使用delete命令删除一个数据库表内的一条记录,删除完成后查找systables内关于该表的记录信息时,将会发现nrows(数据库表的记录行数目)并没有改变。而通过执行update statistics命令,就可以使系统表systables、sysditrib、syscolumns、sysindexes等表内的信息得到更新。在运行完update statistics后,这时就会发现systables内的nrows字段已得到更新。如果执行update statistics medium(high),在sysdistrib表内还可以得到更新的数据分布信息。所以,当大量地修改数据库表后执行一下update statistics *** 作。另外,update statistics将强迫存储过程的优化(对sysprocpplan更新)。以下是与update statistics 相关的系统表:

1、syscolumns:

描述了数据库内的每个字段,其中的colmin、colmax存储了数据库各表字段的次小及次大值,这些值只有在该字段是索引且运行了Update statistics之后才生效。如对于字段值1、2、3、4、5,则4为次大值,2为次小值。

2、sysdistrib:

存储了数据分布信息。该表内提供了详细的表字段的信息用于提供给优化器优化SQL Select语句的执行。当执行update statistics medium(high)之后将往此表存入信息。

执行“dbschema -hd”可以得到指定表或字段的分布信息

3、sysindexes:

描述了数据库内的索引信息。对于数据库内的每个索引对应一条记录。修改索引之后只有执行Update statistics才能使其改变在该表内得到反映。同时也更新clust的数值,在该表的数据页数目及数据库记录条数之间

4、systables:

通过执行Update statistics可以更新nrows数据

update statistics有以下三种级别:

1、LOW:

缺省为LOW,此时搜集了关于column的最少量信息。只有systables、syscolumns、sysinexes内的内容改变,不影响sysdistrib。为了提高效率,一般对非索引字段执行LOW *** 作

2、HIGH:

此时构建的分布信息是准确的,而不是统计意义上的。

因为耗费时间和占用CPU 资源,可以只对表或字段执行HIGH *** 作。对于非常大的表,数据库服务器将扫描一次每个字段的所有数据。可以配置DBUPSPACE环境变量来决定可以利用的的系统磁盘空间

3、MEDIUM:

抽样选取数据分布信息,故所需时间比HIGH要少

什么时候应该执行update ststistics ?

建议在以下情况,执行update statistics *** 作:

对数据做了大量修改,大量是针对数据的分布而言,若数据分布没有明显的改变则可以不做

改变的数据库表有与之相关的存储过程,避免在运行时存储过程重新优化

数据库升级之后完成对索引的转变

update ststistics 的方法

考虑到速度性能因素,执行update statistics的推荐方法:

对表执行:update statistics medium for table #### distributions only

对每个索引的首字段执行:update statistics high

对复合索引执行:update statistics low

必要时对非索引字段但在条件中使用到的字段执行Update statistics high *** 作

SQL如何将一个数据库中查到的结果加入到另一个数据库?

语句形式为:insert into 资料库名框架名表名(列名) select (列名) from 资料库名框架名表名 where 条件。

类似这样写就行了:

insert into MyEmpdbotjdjb(yybh)

select yybh

from MyCmddbotjdjb where djrq='2009-10-15' and yybh = '11'

select a,c INTO Table2 from Table1。

SQL全称是“结构化查询语言(Structured Query Language)”,最早的是IBM的圣约瑟研究实验室为其关系资料库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言,得到了广泛的应用。如今无论是像Oracle ,Sybase,Informix,SQL server这些大型的资料库管理系统,还是像Visual Foxporo,PowerBuilder这些微机上常用的资料库开发系统,都支援SQL语言作为查询语言。

如何将 一个数据库同步到另一个数据库

1直接方法,将需要的查询的资料赋值到excel中。相应调整,然后再赋值到目标表中(对于资料量不大的情况下较快)

2最好两资料库拥有相同的登入名和密码不然比较麻烦

insert into 目标资料库dbo目标表名(栏位1栏位n)

select 段1栏位n from 源资料库dbo源表名 或 select 段1栏位n into 目标资料库dbo目标表名 from 源资料库dbo源表名

3这样的插入注意表字段的长度和约束条件,若原表中栏位长,就得将目标表中的栏位相应加长

如何将一个sql档案汇入到mysql资料库中的一个数据库里

D:\> mysql -uroot -ppassword

Wele to the MySQL monitor Commands end with ; or \g

Your MySQL connection id is 18508

Server version: 5122-rc Source distribution

Type 'help;' or '\h' for help Type '\c' to clear the buffer

mysql> use db

Database changed

mysql> source D:\filesql

怎样将一个数据库中的储存过程复制到另一个数据库中

如果你是想把储存过程这些程式搬到另外一个数据库的话,那就直接把这些储存过程另存为SQL文字,然后在另外一个数据库重新建立就是了。

如果你的意思是保持两个资料库资料的同步和一致,就可以考虑配置两个资料库之间的资料同步的一些方案,例如资料库复制、资料库资料档案的磁碟映象等等技术方案,如果对高可用性HA要求非常高的系统,也可以考虑使用商业资料库系统的丛集Cluster方案。

SQL中如何将一个数据库中的所有的表结构复制到另一个数据库中? 用资料库指令码实现,请问指令码怎么写?

insert 表

select from OPENDATASOURCE( 'SQLOLEDB', 'Data Source=ServerName;User ID=MyUID;Password=MyPass' )资料库dbo表

可以将一个数据库表新增到另一个数据库中吗?为什么?

结构一样的话

insert into 资料库AdboTableA

select from 资料库BdboTableA

另外:

nsert into DDD(栏位1,栏位2,栏位3 )

(

select 栏位1,栏位2,栏位3 from AAA,BBB,CCC

)

插入的栏位和查询的栏位数量型别一致

由于你的夸库查询插入

所以在表名前加 库名使用者名称

insert into B使用者DDD(栏位1,栏位2,栏位3 )

(

select 栏位1,栏位2,栏位3 from A使用者AAA,A使用者BBB,A使用者CCC

)

如果是sqlserver资料库,可以在查询分析器左边选单看到表使用者名称,

如果你是在A库下 *** 作,可以省去A库表的库名使用者名称,同理B库表也一样

VFP 将一个数据库表移动到另外一个数据库中

OPEN DATABASE dbcFileName1 &&开启原资料库

REMOVE TABLE TableName && 从原资料库中移去表

DATABASES ALL &&关闭原资料库

OPEN DATABASE dbcFileName2 &&开启新资料库

ADD TABLE TableName && 新增表到新资料库

aess将一个数据库汇入到另一个数据库时怎么合并相同的表

不考虑资料合并时

select A栏位1,A栏位2from A into B

A是来源表,B是目标表。

同一个检视结构插入到另一个数据库中查询相应资料 sql

如果在同一个伺服器中的不同资料库,可以跨资料库建检视。

比如有两个资料库A 和B B资料库中有个表TA

那么可以在A资料库中建个检视,取自B资料库中表TA中的资料

use A

go

creat view B_TA as

select from BTA

go

这样就在A资料库中建一个检视B_TA 资料取自B资料库中TA表

C#怎样实现从资料库中把资料传到另一个数据库中

比较复杂啊

在按钮里先载入另一个数据库然后UPdate,繁琐了!

以上就是关于informix中怎么导入表结构全部的内容,包括:informix中怎么导入表结构、由浅入深讲解updatestatistics的级别、SQL如何将一个数据库中查到的结果加入到另一个数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9693187.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存