我的电脑坏了但幸运的是我备份了文件夹C:\ Program Files\PostgreSQL.
现在我在一台新计算机上工作,我想导入以前存储在外部磁盘中的Postgres数据库.
我想导出位于备份文件夹中的特定数据库的架构.
该文件PostgreSQL\8.3\data\global\pg_database包含有关数据库及其OID的信息; 例如:
"db1" 20012
"db2" 23456
Run Code Online (Sandbox Code Playgroud)
我想导出"db1"的架构.
文件夹中有一个名为"20012"的文件夹"PostgreSQL\8.3\data\base\20012"
,其中包含大量文件[500个文件].
有没有办法导出该数据库的架构?
请注意,所有Postgresql数据库文件都位于外部硬盘中,我想将该数据库的模式导出到SQL文件中,获取该文件,运行它并在本地创建相同的精确数据库.
作为构建过程的一部分,我们在将代码部署到4个不同的环境时运行数据库更新脚本.此外,由于相同的查询将添加到,直到我们放下一个释放到生产它具有能够给定的数据库上运行多次.像这样:
IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = OBJECT_ID(N'[Table]'))
BEGIN
CREATE TABLE [Table]
(...)
END
Run Code Online (Sandbox Code Playgroud)
目前,我在部署/构建脚本中有一个create schema语句.我在哪里查询架构的存在?
我曾经认为模式是数据库本身之前的"上层包装"对象.我的意思DB.schema.<what_ever_object_name_under_schema>.
那么,目录"包装器"现在非常令人困惑.我们为什么需要目录?出于何种目的,目前应该使用目录?
我已申请在公司实习,作为一个问题,他们要求我为他们的公司创建一个具有特定要求的模式,并将它们邮寄给DDL文件.我已经安装了Oracle数据库11g Express版,但是如何在Oracle数据库11g中创建新的模式?我在网上搜索了一个解决方案,但我无法理解该怎么做.在创建架构后,我应该将哪个文件邮寄给他们?
背景
我正在从我们的RDBMS数据库到MongoDB的转换原型.在非规范化的过程中,似乎我有两个选择,一个导致许多(数百万)较小的文档,或者一个导致较少(数十万)大文档.
如果我可以将它提炼成一个简单的模拟,那么具有较少客户文档的集合(如Java)之间的区别是:
class Customer {
private String name;
private Address address;
// each CreditCard has hundreds of Payment instances
private Set<CreditCard> creditCards;
}
或者包含许多许多付款文件的集合,如下所示:
class Payment {
private Customer customer;
private CreditCard creditCard;
private Date payDate;
private float payAmount;
}
问题
MongoDB是否设计为偏好许多很小的文档或更少的大文档?答案主要取决于我计划运行的查询吗?(即客户X有多少张信用卡?vs上个月所有客户支付的平均金额是多少?)
我已经环顾了很多,但我没有偶然发现任何可以帮助我回答我的问题的MongoDB架构最佳实践.
例:
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.7.1</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<schemaDirectory>src/main/resources/dir1</schemaDirectory>
<schemaIncludes>
<include>schema1.xsd</include>
</schemaIncludes>
<generatePackage>schema1.package</generatePackage>
</configuration>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.7.1</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<schemaDirectory>src/main/resources/dir2</schemaDirectory>
<schemaIncludes>
<include>schema2.xsd</include>
</schemaIncludes>
<generatePackage>schema2.package</generatePackage>
</configuration>
</plugin>
</plugins>
Run Code Online (Sandbox Code Playgroud)
发生了什么:Maven执行第一个插件.然后删除目标文件夹并创建第二个包,然后该包可见.
我尝试为第一个配置设置target/somedir1,为第二个配置设置target/somedir2.但这种行为并没有改变?有任何想法吗?我不想直接在src/main/java文件夹中生成包,因为这些包是经过处理的,不应与手动创建的类混合使用.
在xml架构文档中,如果我同时拥有targetNamespace和没有前缀的xmlns .
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://example.com/" xmlns="http://example.com/">
Run Code Online (Sandbox Code Playgroud)
它们之间的确切区别是什么?我的理解是,如果你有一个没有前缀的xmlns,那么没有前缀的所有元素都会得到那个名称空间,并且......对于targetNamespace来说,这一点令人困惑.
什么时候应该使用XML属性?何时应该使用XML元素?
例如
<customData>
<records>
<record name="foo" description="bar" />
</records>
</customData>
Run Code Online (Sandbox Code Playgroud)
要么
<customData>
<records>
<record>
<name>foo</name>
<description>bar</description>
</record>
</records>
</customData>
Run Code Online (Sandbox Code Playgroud) 我总是觉得有点难以向其他人解释:为什么存在XML命名空间?我们什么时候应该使用它们,何时不应该使用它们 在XML中使用命名空间时常见的陷阱是什么?
另外,它们如何与XML模式相关?XSD架构是否应始终与命名空间相关联?
我正在使用Mongoose,MongoDB和Node.
我想定义一个架构,其中一个字段是date\timestamp.
我想使用此字段以返回在过去5分钟内已更新的所有记录.
由于在Mongoose中我不能使用Timestamp()方法,我理解我唯一的选择是使用以下Javascript方法:
time : { type: Number, default: (new Date()).getTime() }
Run Code Online (Sandbox Code Playgroud)
它可能不是查询庞大数据库的最有效方式.如果有人可以分享一种更有效的方式来实现这一点,我将非常感激.
有没有办法用Mongoose实现这个并且能够使用MongoDB时间戳?