如何在Access中使用SQL语句

oracle 想要依照现有的表建立一个没有数据的空表怎么办 create table new_table as select * from old_tab

是的,这种复制表的方法是用PL/SQL编写的。
您给出的示例是 CREATE TABLE 新表名称 AS SELECT FROM 复制的表名称 WHERE 1 =2 ;我明白。

这意味着你创建一个新表,名为“新表名”,然后检查“复制表名”中的数据,但添加条件where 1 =2 这个条件永远不会成立,因此找到的记录将为空。
结果如何?新表“新表名”的结构与“复制的表名”一模一样,比如有哪些列,每列是什么类型,但不包含任何数据。

这个技巧非常有用,它只需要结构,不需要数据。
比如我2 02 2 年在北京做项目的时候,有时候就需要这样做。
假设有一个名为old_data_table的表,其中包含大量数据,数千项。
我使用这个语句快速创建了一个具有相同结构的new_data_table,准备添加新数据或测试。
当时old_data_table有十几列,数据类型相当复杂。
使用此方法比手动创建表快得多。

关键是WHERE 1 =2 技巧,这个技巧简单粗暴。
想一想,如果条件改变了,比如WHERE id = 1 00,那么就只能找到ID为1 00的记录了。
现在这个1 =2 意味着什么都不检查,纯粹的结构复制。

嗯,也许这就是重点。
你是对的。

用createtable表名as

oracle怎么导入dbf文件

说白了,将DBF导入到Oracle中需要三个步骤:建表、准备文件、使用SQLLoader加载数据。
但秘密就在于细节。
不要只按照步骤操作。

首先,最重要的是创建表时需要对字段类型进行排序。
当我去年运行该项目时,DBF 中的日期字段是 8 位数字。
直接使用DATE类型是不正确的。
我不得不将其更改为 VARCHAR2 (8 )。
还有一点是DBF文件可能有BOM头。
在使用文本编辑器打开该标头之前,必须先删除该标头。
否则,SQLLoader 将其视为文本。
还有另一个重要的细节。
控制文件中的字段分隔符应根据 DBF 文件中实际使用的内容来确定。
上次遇到逗号分隔的DBF,直接用竖线分隔符就得到了错误的字符。

一开始我以为把DBF转成CSV就可以了,后来发现我错了。
CSV格式的兼容性更强,但DBF的本机压缩可以节省大量磁盘空间。
如果您自己转换它,则需要重新编码。

等一下,还有一件事。
不要只查看 SQLLoader 日志文件中的错误行。
前几行环境变量信息也可以帮助查找问题。
说实话,我很困惑。
我有一个项目,其中 DBF 文件是 DOS 包装的,并且控制文件不添加 TRAILINGNULLCOLS。
因此,所有空字段都将导入为 NULL。

我们建议首先在测试环境中运行它,然后在生产中使用它之前调整控制文件。
如果您的DBF文件很大,则需要批量导入它们。
如果大小小于 3 000,这通常没问题,但如果大于 5 0,000,则需要将 ERRORS=1 000 添加到控制文件中。
否则,你的内存会爆炸并引起问题。