如何用Excel *** 作Oracle

如何用Excel *** 作Oracle,第1张

oracle数据库有一个student表,现有一个excel表:studentxlsx,需导入oracle数据库student表中。

student表的拥有者是system,system密码为test

打开需导入的excel表格,单击office按钮,选择另存为--其他格式

选择保存路径(置于D:\),保存类型CSV(逗号分隔)(csv),设置文件名为studentcsv,单击保存

新建inputctl文件(置于D:\),内容为:

load data

infile 'd:\studentcsv'

append into table student fields terminated by ','

trailing nullcols(id,name,sex,age)

说明:infile后面参数为欲导入的excel表(已转换成csv格式)路径及名称;append在表后追加;table后面跟oracle数据库中的表名称; terminated by ','表示字段分隔符;(id,name,sex,age)表示字段名称列表

同时按Windows徽标键和R键,打开运行,输入cmd,打开命令提示符,输入命令:

sqlldr userid=system/test@netservicename control=d:\inputctl

说明:system/test,为oracle数据库表student的所有者及其密码;

@ netservicename为网络服务名;

control是inputctl文件名称及路径

5

进入oracle数据库,查询student表,excel已导入成功

你可能有各种形式的数据,包括手写在纸上、存放在电脑上、或是在数据库管理系统里,不论如何,总有一种方法可以让SAS来读取。

SAS读取的数据的方法主要有以下几种类型:

 直接输入;

 从原始数据文件中创建一个SAS数据集(creating SAS data sets from raw data files);

 将其他软件中的数据文件转换成SAS数据集;

 直接读取其他软件的数据集;

直接输入

View table窗口可以让你以表格形式输入数据,可以定义变量、设置属性,如name、length和 type(character or numeric)

 SAS 企业向导模块

 SAS/FSP 模块,是Full Screen Product的简称,可以设计定制的数据输入窗口,也有检测数据输入错误的功能(The SAS/FSP product is licensed separately from Base SAS software)。

从原始数据文件中创建一个SAS数据集

你有两种方法读取原始数据文件:

 数据步可以读取任何形式的原始数据文件,比如text, ASCII, sequential, flat files。

 导入向导(Import Wizard)、导入过程(IMPORT procedure)适用于UNIX、OpenVMS和 Windows *** 作环境的简单方法,可以读取CSV(comma-separated values)和其他一些限定的文件类型。

将其他软件中的数据文件转换成SAS数据集

如果数据在一个软件中以某种格式存放,但需要用另一种软件分析时,就会很麻烦。有几种方法可以将某种软件中的数据转换成SAS数据集:

 如果安装SAS/ACCESS模块,可以用导入过程(import procedure)和导入向导(Import Wizard)将Excel、Lotus、dBase和Access文件导入SAS数据集。

 如果没有安装,可以用存放数据的软件创建一个原始文件,并用数据步或导入过程(import procedure)读取。很多软件都可以创建CSV文件。

 Windows *** 作环境下也可以用动态数据交换技术(Dynamic Data Exchange,DDE)。前提是必须有一个其他的Windows程序与SAS同时运行,再使用DDE和数据步。

直接读取其他软件的数据集

 SAS/ACCESS产品可以不用转换数据格式读取数据,并适用于大部分数据库管理系统,包括ORACLE,DB2,INGRES和 SYBASE(但使用方法本书没有介绍)。

 使用Excel engine和Access engine来读取这两种类型的数据。(SAS帮助文档)

 还有其他的一些数据引擎(data engines)来读取数据,如SPSS engine(附录D),查

使用DATA步,通过INFILE语句指定原始数据文件;

SAS提供了以下3种基本输入方式:

列表输入

按列输入

格式化输入

用SAS如何读取数据

一、列表输入

1) FILENAME语句指定到单个文件的文件引用

用SAS如何读取数据

2) FILENAME语句指定到一组外部文件存储位置的文件引用

用SAS如何读取数据

列表输入(List Input)用于读取原始数据记录中每个字段由至少一个分隔符隔开,并且数据值中不包含该分隔符的原始数据。列表输入默认分隔符为空格,连续的分隔符会当成一个分隔符处理,INPUT语句中包含了简单的变量名称列表。

在SAS窗口中提交如下代码:

用SAS如何读取数据

INPUT语句会逐行顺序地读取inventorydat中的数据值,并赋值给变量。在读取每行数据时,遇到空格就停止读入当前数据值,并从非空格处读入下一个数据值。

3) 使用INFILE语句的选项DLM=指定分隔符

当原始数据中数据记录的数据值未使用空格,而是使用其他分隔符时,需在INFILE语句中使用DLM=选项,告诉SAS读入数据时需要使用的分隔符。

下面将上面外部数据文件的内容稍作修改以便比较。文件inventory_dlmdat的内容如下,数据记录中的各数据值之间由逗号(,)隔开。

用SAS如何读取数据

正确读取该数据文件的代码如下:

用SAS如何读取数据

使用DLM=选项可处理原始数据记录中数据值中包含空格的情况。此外,使用DLM=选项的DATA步也可以很好地处理数据中的缺失值。如果接连有多个指定的分隔符,也会当成一个分隔符处理。但如果分隔符之间有空格,则该空格会当作缺失值读入变量并写入数据集。例如,当数据文件inventory_missingdat的内容如下:

用SAS如何读取数据

注意:当用dlm=“,”时,想要识别缺失数据必须使用空格作为占位符,否则没有空格只有两个逗号时,数据只会读入该行的第一个数据,并且之后的数据也不会读入;

提交与上例相同的SAS代码,PRINT过程打印的数据集内容如下图所示,其中第3个观测Instock变量为默认值:

用SAS如何读取数据

4) 使用INFILE语句的选项DSD

DSD (Delimiter-Sensitive Data)

指定选项DSD后,如果数据值是由引号引起来的,可以将数据值中的分隔符当成是数据值的一部分读入,字符值中的引号在读入PDV时会被删除。DSD选项将默认的分隔符设置为逗号,还改变了使用列表输入时SAS处理分隔符的方式,比如,如果有两个连续的逗号,将被当作缺失值。

选项DSD还可以和其他选项(例如DLM=和DLMSTR=)一起使用。

用SAS如何读取数据

5) 使用INFILE语句的选项missover

MISSOVER:会在DATA步的本次迭代中阻止INPUT语句读入原始数据的下一条记录,并将PDV中所有未赋值的变量保持为缺失值(PDV中变量未赋值时就为缺失值)。当原始数据记录中的最后一个或多个字段没有值且没有占位符时,并且希望SAS将对应的变量置为缺失值时使用MISSOVER。

外部数据文件missoverdat的内容如下,依次包括课程编号、课程名称、参加课程人数和讲师姓名等信息。其中第二条记录中未提供参加课程人数和讲师姓名,也没有占位符。

用SAS如何读取数据

在INFILE语句中加上MISSOVER选项,代码如下:

用SAS如何读取数据

PRINT过程打印的数据集如下图所示:

用SAS如何读取数据

5) 使用INFILE语句的选项turnover

默认情况下(选项为FLOWOVER),当原始数据记录长度小于INPUT语句的预期时,INPUT语句自动读入下一条数据记录。当指定选项TRUNCOVER时,即使当前输入行数据的长度小于INPUT语句的预期,也会将当前输入行的数据赋值给当前处理的变量,并将其他没有赋值的变量设置为缺失值。

TRUNCOVER选项常用于处理变长的原始数据记录,可在INPUT语句中定义足够长度的变量,即使当前数据记录中的数据长度小于变量指定的长度,也可以将该记录从缓冲区读入PDV,并写入数据集,以便进一步处理。

原始数据文件commentsdat的内容如下,共3条记录,全部为文本,文本长度不确定。

用SAS如何读取数据

使用TRUNCOVER选项读入该文件记录。设置变量Text的输入格式为“$500”,当原始记录中文本长度不足500个字符时,TRUNCOVER选项会将当前输入缓冲区中的所有内容写入PDV,并写入数据集。

用SAS如何读取数据

PRINT语句打印的数据集内容如下图所示。可以看到,所有的评论信息都读入了数据集中。

用SAS如何读取数据

MISSOVER与TRUNCOVER的不同之处在于,如果当前变量没有读到要求长度的数据,MISSOVER会将当前变量的值也置为缺失值。还是以上面的示例为例,如果将TRUNCOVER换成MISSOVER,所生成的数据集中3个观测值都为缺失值。

5) 使用INFILE语句的选项PAD

选项LRECL为系统选项指定用于读写外部文件的默认逻辑记录长度。LRECL指定逻辑记录的长度为1(字节)或1024(k字节)的倍数。例如32表示32字节、16k表示16384字节。该选项的范围为1~32767。在SAS 94中,LRECL系统选项默认值为32767,通常不需要修改。

PAD和NOPAD选项控制SAS是否使用空格对从外部文件读入的记录进行填充,使其达到选项LRECL=指定的长度。默认设置为NOPAD。

当使用PAD选项时,SAS会自动用空格填充从外部文件中读入的记录长度。

还是以上面的commentsdat文件为例:

用SAS如何读取数据

下面在INFILE语句中使用PAD选项,代码如下:

用SAS如何读取数据

PRINT过程打印的数据集内容如下图所示。DATA步正确读入了文件中的所有评论。

用SAS如何读取数据

6) 使用INFILE语句的选项控制输入

FIRSTOBS=

FIRSTOBS= 选项告诉SAS从哪一行开始读取数据,当数据开头有些说明信息,或者想要跳过某些行时,这个选项很有用。例如,如下原始数据文件中,开头两行是关于数据的描述:

用SAS如何读取数据

那么用如下程序可以让SAS从第三行开始读取数据:

用SAS如何读取数据

OBS= OBS=告诉SAS一直读取到哪一行位置,注意是行而不是观测值(有的观测值占据多行)比如,如下的原始数据文件中,结尾处还有一句不需要的数据说明时。就需要这个选项:

用SAS如何读取数据

用FIRSTOBS=3和OBS=5就可以读取第三行到第五行的数据:

用SAS如何读取数据

二、按列输入

当原始数据记录中的数据值在每条记录中占据相同的列时,可使用按列输入的方式。按列输入(Column Input)可以读取固定列的数据。

文件customerdat的内容如下,其中,第114列为产品编号,第1626列为附属品牌,第2829列为专卖店数,第3135列为产品库存

数。

用SAS如何读取数据

用SAS如何读取数据

三、格式化输入

上面介绍的按列输入与列表输入一样,只能读取标准的字符或数字值到数据集中。SAS还可以读取特殊格式的数字数据,例如二进制数据、日期/时间(01FEB2013),或者包含逗号(1,262)、货币符号($873)等特殊字符的数字值。在这种情况下,就需要使用格式化输入(formatted input)了,即在INPUT语句中提供特殊的指令,以便SAS正确地读取原始数据记录中的数据值。这些特殊指令称为输入格式(Informat)。格式化输入组合了按列输入特征和读取非标准化数字或字符值的能力,保证数据值可正确地从原始数据记录中读入。

来看个示例,原始数据文件salesdat的内容如下,该文件中原始数据记录包含字段依次为员工ID、部门、销售额和上次修改日期,其中销售额和日期都不是标准数字值,需使用对应的输入格式。

用SAS如何读取数据

读入处理该文件的SAS代码如下,其中Sales和Date变量分别使用了输入格式comma6和date9,Emp_ID和Dept使用的是上面介绍过的按列输入方式。

用SAS如何读取数据

在INPUT语句中,还使用了相对列控制符号+1和绝对列控制符号@22,分别表示将当前的输入列控制指针向前移1位和将该指针直接移动到列22。在上面的示例中,程序读入一行记录到输入缓冲区后,列控制指针的移动情况如下:

·第1~5列写入Emp_ID,列控制指针在第6列。

·第7~9列写入Dept,这时列控制指针在第10列。

·+1将列控制指针移到第11列。

·开始读入comma6中指定的6列,即将第11~16列使用输入格式转换后写入Sales,这时列控制指针在第17列。

·@22将控制指针直接移到第22列,读入date9中指定的9列,即第22~30列,然后使用该输入格式进行转换,并写入Date。

四、带修饰的列表输入

将列表输入、输入格式和修饰符结合起来,结合后就成了带修饰的列表输入(modified list input),这样可以使用列表输入方式更灵活地读入数据。

·&修饰符(ampersand format modifier):使用列表输入时,该修改符能够读入数据值中包含一个或多个嵌入空格的字符值,并指定字符的输入格式。SAS读入数据直到遇到两个连续的空格或达到所定义的数据长度或输入行结束才停止。&修饰符解决了使用列表输入方式读取数据值中包含嵌入空格的问题,但要求该包含空格的数据值与下一个数据值之间至少间隔两个空格。

·:修饰符(colon format modifier):使用列表输入时,该修改符可以在变量名后指定输入格式。SAS读入数据直到遇到空列、达到所定义的数据长度(对字符型变量来说)或输入行结束才停止。:修饰符可以读取超过8个字节的字符数据和包含特殊字符的数字字符。

·~修饰符(tilde forat modifier):可以读入并保持数据值中的单引号、双引号和分隔符。

原始数据文件customer2dat的内容如下,每条记录包含联系人信息:客户ID、名字和出生日期,其中名字里面嵌入了空格,可使用&修饰符读入。注意,使用&修饰符要求名字和出生日期之间为两个空格。

用SAS如何读取数据

处理该数据的SAS代码如下,其中,Name变量使用了&修饰符读入带空格的名字,并指定输入格式为$20,所以Name变量的字符长度为20个字节,而且SAS会将缓冲区中的20个字符读入Name。Birth_Date使用了:修饰符读入日期格式的数据。

用SAS如何读取数据

@’character’ 列指示器

@column列指示器可以让SAS直接从某列开始读取数据。但有时候你不知道要读取的数据是从哪列开始,此时你只要知道要读取的数据的前面那个字符或单词即可。比如有一个关于狗的原始文件,你想要读取狗的品种号,但文件排列很凌乱,只知道品种号跟随在单词breed后面,那么可以用如下方式读取:

Input @’Breed:’ DogBreed $;

例子 web日志是凌乱数据的一个很好例子,下面是一个网站的web日志,数据开始于访问IP,后面有访问日期、访问文件名等信息。

现在想要读取访问日期和访问的文件名,但是它们每行中所占据的列的位置都不同,而且文件名的长度每行都不一样,那么SAS读取这种文件通过如下方式:

@’[’作为列指示器,告诉SAS读取[之后的内容,@’GET’告诉SAS读取GET之后的内容,由于文件名作为字符串变量,这里基本都会超过8个字节,因此后面附加:$20。输出结果如下:

用SAS如何读取数据

五、混合输入

在使用INPUT语句时不限于使用一种输入方式,可以在一条INPUT语句中混合使用这些输入方式,只要可以适当地描述原始数据记录就行。

原始数据文件mixedinputdat的内容如下,其中依次包括了课程编号、课程名称、开课日期和报名人数等信息。

用SAS如何读取数据

列表输入读取Course_ID和Attendee、按列输入读取Course_Name、格式化输入读取Open_Date。代码如下:

用SAS如何读取数据

跨行观测值的读取方式:

一般原始文件中一行代表一个观测值,有时会出现一个观测值跨行的情况。由于SAS会自动转到下一行读取数据,直到读取这个观测的所有变量(input语句中给出),所以你需要告诉SAS什么时候不要换行,以便在日志中不出现SAS-went-to-a-new-line的暂停说明,此时需要在INPUT语句中加行指示器。

行指示器,斜线/:告诉SAS跳至原始数据的第二行;#n:跳至第n行,n代表原始数据中某观测值的行数(#2则让SAS跳至某观测值的第二行),#n不能用来回跳。

例子 有一组关于温度的数据,temperaturedat第一行代表城市和州,第二行代表本日最高温和最低温,第三行代表史上最高温和最低温。

用如下的程度来读取这份数据:

Input后面告诉SAS读取第一行的city变量和state变量,斜线/告诉SAS移动到下一行的第一列,以便读取normalhigh和normallow。#3告诉SAS移动到第三行的第一列以便继续读取观测值的recordhigh变量和recordlow变量。这里/可以用#2代替,也可以用/代替#3。

日志记录如下:

用SAS如何读取数据

输出结果如下:

一行有多个观测值的原始文件读取

当一行出现多个观测值时,可以在input语句结尾加一个停止符号@@

例子 有一个关于降水量的数据,precipitationdat,文件包含城市名、州名、月平均降水量、月平均降水天数:

这个数据文件中,第一行包含了两个观测值,可以用@@的程序读取:

输出结果如下:

读取原始数据的部分观测值

有时候只需要读取原始数据的部分观测值,比如只需要年鉴中的女性数据、收入超过10万的人口数据等。此时的数据读取方式如下:在SAS读取某一行观测值时,首先读取足够的变量以便决定是否需要保留此行的观测值。然后在input语句结尾加符号@,叫做a trailing at(called a trailing at),这告诉SAS先停在(hold)此行,同时用IF语句检测此观测值是否满足需要,如果是,那么可以再用一个input语句来读取现有的变量。

例子 有一个关于当地交通的数据,trafficdat数据包含街道的类型(freeways和surface)、街道名称、早晨每小时的机动车流动量、晚上每小时机动车流动量。

如果现在你只需要freeway的数据,可以用下述程序:

第一个input读取字符串变量,@是SAS停留在观测值上并用IF检测,第二个input读取input后面的变量值。

输入结果如下所示:

@ vs @@ ,@的作用类似于@@,都是行停留指示符(line-hold specifiers),不同地方在于停留多久,@能使SAS停留到下一个input语句(也不换行),@@能使停留的时间到下一个data步(也不换行)。

比如这段代码:

data test;

infile cards ;

input x @;

input y;

input z @@;

cards;

1 2 3 4 5 6

7 8 9 10 11 12

13 14 15 16 17

;

run;

test输出结果就是:

The End

配个自己的目录,配置>

1、创建loadctl文件:

在任意文件夹下创建loadctl文件,用编辑器打开loadctl文件,并写入以下代码:

loaddata

CHARACTERSETUTF8

infile"D:\importdata\datafile\datatxt"

append

intotabletable_name

fieldsterminatedby'|'

trailingnullcols

(

id,

mobile

)

2、运行loadctl文件:打开cmd,切换到loadctl文件目录下,运行以下命令:

sqlldrsuncrs/suncrs@ubuatcontrol=loadctllog=loglog

suncrs为用户名和密码,ubuat为数据库名

扩展资料:

loadctl代码解析:

第二行指定编码(文本文件编码)。

第三行指定要导入的文件datatxt的路径。

第五行指定导入的表(以上l例子表名为:table_name)。

第六行表示字段分隔符。

最后括号内填写字段(注意顺序),字段名写目标表的字段名。

trim函数可以过滤指定的字符串:

完整格式:TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)

简化格式:TRIM([remstr FROM] str)

返回字符串 str , 其中所有remstr前缀和/或后缀都已被删除。若分类符BOTH、LEADIN或TRAILING中没有一个是给定的,则假设为BOTH。remstr为可选项,在未指定情况下,可删除空格。

[sql] view plain copy 在CODE上查看代码片派生到我的代码片

mysql> SELECT TRIM(' bar ');

-> 'bar'

mysql> SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx'); --删除指定的首字符 x

-> 'barxxx'

mysql> SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx'); --删除指定的首尾字符 x

-> 'bar'

mysql> SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz'); --删除指定的尾字符 x

-> 'barx'

MySQL中的去除左空格函数:

LTRIM(str);

[sql] view plain copy 在CODE上查看代码片派生到我的代码片

mysql> SELECT LTRIM(' barbar');

-> 'barbar'

mysql中的去除右空格函数:

RTRIM(str):

[sql] view plain copy 在CODE上查看代码片派生到我的代码片

mysql> SELECT RTRIM('barbar ');

-> 'barbar'

INTO TABLE RPT_WORSEN_CELL_73_DETAIL

INSERT

应该是

INSERT

INTO TABLE RPT_WORSEN_CELL_73_DETAIL

D码就是元素的大小,形状的描述

给你做一个非常详经细的说明吧!

光圈(D-CODE)、绘图文件(Gerber)介绍

不管你的设计软件如何强大,你都必须最终创建Gerber格式的光绘文件才能光绘胶片。很好地理解可以减少您对它的厌恶感。 错误地理解光绘文件的内容,PCB 设计系统和光绘系统的关系是这个行业中产生废胶片的最大的原因。

光绘机的简单描述在详细介绍光绘文件之前,简单的讨论一下光绘机会使下面的材料更容易理解。

早期的光绘机是由精确的伺服系统及受它控制的用来装高对比度胶片的 X-Y 桌面组成的。一个很亮的光源直透过快门,透过光圈,聚焦在胶片上。控制系统把 Gerber 命令成适当的桌面移动、轮子的转动和快门的开闭。

图 1 光绘机原理

当快门打开,光柱透过光圈把光圈的影像暴光在胶片上。当快门打开、桌面同步移动时,线条或条纹被影像到胶片上。使用正确的命令控制桌面的移动、光圈的选择和快门的 *** 作,光绘机就能在胶片上生成任何需要的影像。

Gerber Scientific (现在的 Gerber 系统)开始通过生产精密的机器来控制光绘机工业。“Gerber”这个词在光绘业已经名不副实,从现在开始我仍将延用 “Gerber” 文件这种说法来说明 RS274D 光绘命令。

Figure 2 光绘机 *** 作

简洁: 一把双刃刀Gerber 数据最漂亮的地方就在于它的简洁,它只有四个基本的命令加上对应的数据。数据库不得不定义得简单和紧凑是因为第一台机器是由打孔纸带驱动的。这就需要把尽可能多的信息压缩到尽可能少的字节以说明许多“问题”,当时我们并没有预料到存储空间是用数以百计的兆字节代替数以百计的字节来计量的今天。

但是,简洁也有它自己的代价。Gerber文件缺乏驱动光绘机必需的基本信息。这些丢失的信息是由设计者另外交给光绘 *** 作员的,这正是错误的源泉。实际上,定义一种非标准的扩展命令的诱惑是无法抗拒的。每个光绘机生产商都支持在基本GERBER命令上加上一些他们认为区分他们的光绘机所必须的信息。这样造成的后果就是一家厂家的特性而另一家却不支持。

Gerber 文件介绍 下面简单的举例说明GERBER格式的内容和结构:

G90 1G70 2G54D10 3G01X0Y0D02 4X450Y330D01 5X455Y300D03 6G54D11 7Y250D03 8Y200D03 9Y150D03 10X0Y0D02 11M02 12(在右边的行号不是文件的内容。)即使是一个对GERBER文件一窍不通的人也能正确推断出这里每一行表示一个特殊的机器命令,而且星号()是命令的结束符。这在有些软件和教材中被称为块(Block),大多数机器和软件只是按块处理Gerber命令,而不理会行。这里可以看出不同命令的相同之处:使用 G、D、M等命令和X、Y对应的数据。

G-Codes: 设置初始条件

Gerber 调用Gxx命令作为初始码。大多数情况下,这些码被用来配置机器在绘图之前的状态。有一些G码对认识Gerber文件是很重要的:

G90/G91 相对/绝对坐标 在第一行的G90命令告诉机器数据坐标是绝对的,每一个坐标的设置都是相对于桌面的原点(0,0)。绝对的反面就是相对,也就是所有的坐标都是相对与前一坐标增加的。相对坐标就是通过G91 命令设置的。

现在您也许很少看到 G90 ,因为许多软件把绝对坐标作为默认的设置,并且不再标注 G90。这就产生了一个问题——许多后来产生的数据格式也不再费心于 G91 命令。如果您在您的CAM工作站上看到象图3那样的一团“爆炸图”,那就有可能是您试图用绝对坐标方式来读用相对坐标方式生成的文件;当然,也有可能是您使用相对坐标方式来读绝对坐标方式的文件。

图 3 用绝对方式显示相对方式文件。G70/G71

G70/G71 英寸/毫米 :第二行的G70表示下面的数据是使用英寸(INCH)作单位的,这也是一个在GERBER文件中很少出现但很重要的G码。在美国和欧洲大部地区习惯使用英寸,而在世界大部分地区却习惯使用毫米(millimeters)做单位,或者两者都使用。G71就是表明单位是公制。 1英寸等于254毫米。

G54 D码选择 :在第三行的G54是用来表明光圈转换的,它是最常用的G码,是用来指示光绘机把光孔轮转到适当的位置,这个位置是由紧跟在G54后面的Dxx来指示的。现在G54常常被省略,只是靠D码(除D01、D02、D03)来指示光绘机变换光圈。

G04:注解命令 大多数的光绘机都会忽略G04后面的内容。G04就好象MS-DOS批处理文件中的“REM”命令一样,它后面的内容只是为了帮助人们更容易理解文件

G01:画直线命令 在一些光绘机中要求圆弧命令必须用G01配合,G01只是表示光绘机桌面的移动是直线的。

画圆弧命令:G02/G03 和 G74/G75

如果有必要而且Gerber文件里有相应的命令,Gerber 光绘机也能画圆弧。

在很早的时候,圆弧是很少用到PCB(print circuit board,印刷电路板)设计中。后来,为了平衡板材的张力、还有一些是为了减小高速电路的高频发射,在PCB设计中开始使用圆弧。并且使Gerber命令有了相应的发展。

基本的圆弧命令语法:

G##X#####Y#####I#####J#####D##

实例: G02X40Y30150J0D01

G##代表GO2、G03。G02是指示光绘机顺时针画弧,G03是指示光绘机逆时针画弧。I,J表示圆弧的另一个重要的点——圆心。这些命令最好是不要省略。

下面我们将花费一点时间来详细讨论画圆命令。早期的光绘机只能画弧度不超过90度的圆弧,现在的光绘机已经能画360度的圆弧。这就留下一个问题:360度的弧的数据格式也同90度一样,只是在文件头上用G74、G75标出,当光绘机读到G74时,它就开始以90度方式处理下面的数据;当它发现G75时就以360度的方式处理下面的数据。如果您的数据没有错,而且您的CAM软件能正确处理圆弧,那么在您处理90度文件时,您的工作站的显示器上就不应该出弧度大于1/4圆的弧;相反并不成立,处理360度文件时,有可能看到弧度很小的弧,这是因为大多数“新”光绘机在设计时就考虑到兼容性问题。

现在我们来研究一下光绘机是如何处理圆命令的,刚刚了解Gerber文件的人大多数会认为G##X#####Y#####I#####J#####D##会包含一个圆弧的所有内容,其实不然,它前面的一个点也是很重要的,这个点就是圆弧的起点,而G##后面的点是圆弧的终点,I,J是圆心相对与起点的相对坐标。所以大多数软件生成的圆弧命令是这样的:G01X#####Y#####D02G##X#####Y#####I#####J#####D01

顺便提一下,您选购您的CAM软件时一定要试一试它处理圆弧的能力。

画线和画点命令 D01、D02、D03

D码,简单讲就是第一位字符是“D”。Gerber 文件中有三个D码是用来控制桌面沿着X-Y移动的。

D01 (D1): 打开快门,同时移动桌面到对应的X-Y坐标。D02 (D2): 关闭快门,同时移动桌面到对应的X-Y坐标。D03 (D3): 打开快门,同时移动桌面到对应的X-Y坐标。然后快速地打开、关闭快门, 这样就形成一个曝光点。

D01 是一个画线的命令;D02 是一个只移动桌面而不曝光胶片的命令。 打个比方,D01、 D02 就好象笔式光绘仪中的落笔画线和提笔移动笔架。

D03 是“闪烁”命令,桌面移动时快门是关闭的,当桌面移动到对应的坐标时快门打开一下又马上关闭——这样就会在胶片上留下光圈的影像。 D03在画印刷电路板上的焊盘时是一个十分有效的命令。

D01、D02、D03 命令总是跟在他们对应的数据后面,正如下面的例子:

X0Y0D02X450Y330D01X455Y300D03这段数据将让光绘机做如下动作:关闭快门,移动桌面到原点;打开快门,移动桌面到450,330;(这样就从0,0画线到450,330。)关闭快门,移动到455,300,打开快门,关闭快门。

光圈标志——D码(D-CODE) D10-D999不象 D01、D02、D03 ,D10到D999是数据而不是命令,它们是标注光圈或光圈轮上的位置。早期的光绘机使用的是一种有24孔/槽的光圈轮。

表1是早期的光绘机的光孔与D码的对应表。

表 1 D码(D-CODE)与光圈(APERTURE)的对应

D码 光圈序号 D码 光圈序号 10 1 20 13 11 2 21 14 12 3 22 15 13 4 23 16 14 5 24 17 15 6 25 18 16 7 26 19 17 8 27 20 18 9 28 21 19 10 29 22 70 11 72 23 71 12 73 24可以看出从D10到D19是按正常顺序排列的,紧跟在后面就是D70、D71,而D20被排到第13位。从D20到D29依次顺延。到D30时光圈序号应该是23,但是D72、D73被插到D30之前。大多数光绘、CAM软件需要您根据D码输入光圈的信息(形状、大小),少数软件是按光圈序号输入的(此时就需要根据上面的对应表重新排列)。

值得提一下的是D3到D9是一种特殊码,最早时是用来表示虚线、点画线等特殊线段,现在已经很少用到它们了,即使用到也只是某些落后的光绘机的专用代码,它们的具体含义就请查阅光绘机的说明书。

杂项命令 M-码Gerber 文件中最常用的M码是 M00、M01、M02。

我们经常在文件末尾看到M02。M00/M01/M02都是表示Gerber 文件结束,只不过不同的机器使用不同的M码,而大多数软件是使用M02。但是要注意的是有一些软件为了确保在读入文件时不会和其它的数据混合,在文件头上加了M02等M码,而其它的软件一旦读到“M02”就认为文件已结束,从而会是数据丢失。另外一种情况是,有的软件喜欢把多个文件合并在一起,中间用“M02”区分,这些软件在处理这种文件时会自动把数据分开,但是其它软件就不一定会如此处理了。

还有一些软件会在文件头上加上M码作为文件的标识符,具体是何种M码各种软件各不相同。但现在大多数软件都会忽

X,Y 坐标数据 正是大量的坐标数据构成了Gerber文件,而Gerber文件中最多的就是X-Y坐标数据,只有压缩坐标数据才能达到压缩Gerber文件的目的。所以,您要手工排版Gerber文件中的坐标是非常困难的,因为在Gerber规范中已经对坐标数据作了一些处理。

在X、Y数据中省略了小数点

省略了不必要的零(前面的或后面的)

大部分软件只输出变化X或Y数据

省略小数点的规则

与其它字符相比小数点是最“不重用”的一个,特别是事先规定了它的位置时。实际上Gerber文件也的确是这样做的,在Gerber文件中您是很难看到一个小数点的。小数点的位置是人为地设置,由光绘机控制软件来定位的。新手门常犯的一个错误就是主观的用他们常用的数据格式来读新数据,甚至根本就不知道省略小数点这回事。

请看下面这段Gerber命令:

X00560Y00320D02X00670Y00305D01X00700Y00305D01假定这段命令是使用英寸作单位的。第一句的意思很容易理解——桌面移动到点(00560,00320)处,而不画线。可是新的问题又产生了,(00560,00320)到底表示的哪一点?是(56Inch,32Inch),还是(056Inch,032Inch),亦或是(0056Inch,0032Inch)?谁也不能说清楚。但是如果设计者告诉您,在小数点前有几位、小数点后面有几位,那您就能快速的确定这些数据到底代表的是多少。比如,设计师告诉您这段Gerber文件是英制2-3,那么您就能清楚地知道00560表示056Inch(00560),00320是032Inch(00320)。

因此:当别人给您文件时一定要问清楚数据格式;当您给别人文件时一定要告诉他文件格式。如果您的客户也不知道数据格式,嘿嘿!您惨了。怎么办?猜吧——!仔细听好了,下面告诉您一些猜格式的技巧(这可是密笈嗷)。

方法一:根据板面大小

硬质板中很少有板面尺寸大于20Inch的,而大于20Inch X 20Inch 的是没有的。据此,如果您读出来的图形大于20Inch,那就是小数点前的位数太多了。相反,如果您读出俩的图形都堆到原点附近,那十有八九是小数点后的位数太多了(也就是说,小数点前的位数太少了)。

这里需要注意的是,小数点前的位数加上小数点后的位数一定要等于Gerber文件中最长的数的位数,上例中就是5(2+3=5)。

方法二:根据已知尺寸

如果您知道一些关于板子的尺寸,那就好办多了。您只要不停的试,大了就把小数点前的位数变小(小数点后的位数同时变大);小了就把小数点后的位数变小(小数点前的位数同时变大),如果单位没有搞错,一两次就能正确了。如果您没有任何尺寸,那您只能找板子上的器件。有一些器件,如DIP(双列直插集成电路)、PGA封装和一些插座,它们引脚的中心距离是01Inch(254mm),根据这一点您也能大概地确定数据格式。

省略前面和后面的零在Gerber文件中还有什么东西可以省略?很自然,谁都会想到那些在数学中被称为“无效零”的玩意。可是用什么规则?

我们再回头看上面的例子中第一行X00560Y00320D02,现在我们把00560前面的零省略变成560,那么根据客户告诉我们的数据格式是英制2-3,那么我们就可以推断出560代表的数据是什么。因为是2-3制的,我们先保证小数点后面的三位,那560就变成560,我想您应该知道560是什么意思,反正我是知道!

——这样处理方法就是省前零(Leading zero)。

下面我们就把上面的例子生成省前零,您能把它们试着恢复吗?。

不省零 省前零 X00560Y00320D02 X560Y230D2X00670Y00305D01 X670Y305D1X00700Y00305D01 X700Y305D1 现在我们来数数这两种格式的字节数,不省零占用48字节,省前零占用33字节。节约了312%,而图形却是一样的。您瞧多好的主意,这对当时节约打孔纸带是多么有效,多么的重要。

还有一种省零的方法,省去后面的无效零。也就是保留前面的无效零而去除后面的无效零,恢复时只要保证格式前面的位数,来确定小数点的位置。下面的例子说明了省后零(Trailing Zero)。

不省零 省后零 X00560Y00320D02 X0056Y0032D2X00670Y00305D01 X0067Y00305D1X00700Y00305D01 X007Y00305D1 除了这两种省零的方法,还有些软件喜欢把前后零都省去,这样一来就必须保留小数点。如果您的软件不支持小数点,那您就赶快找软件去编辑它们吧,或者去书店买一本 MS-OFFICE ,我知道用MS-WORD和MS-EXCEL能把它们转换成您所需要的格式。

因此:当您把GERBER文件给别人时一定要告诉他是省前零还是省后零;当别人给您文件时一定要问清楚是省前零还是省后零。如果您不知道是省前零,还是省后零,您也可以猜,而且这比猜格式容易多了。只要用字编辑软件打开它看一看,如果前面有零就有可能是省后零;如果后面有零就有可能是省前零。唯一要注意的是,有些软件在处理省前零时只把小数点前的零省掉,如00050就成了050,省后零也一样;而有些软件则是把前面的零都省略,如00050就成了50,省后零同样。这时就需要补零定小数点。

有样式(Modal)数据坐标到现在为止,您已经知道省略小数点、省零。或许您认为您已经完全了解Gerber数据了,千万别自满。请您回顾一下光绘机的工作原理,您也许又会产生新的想法。光绘机的X-Y的移动是相互独立的,而且Gerber数据中也有许多点排在与X或Y平行的线上。说到这里,您也须明白还有一种方法可以压缩Gerber文件。

“为什么不让机器记住X、Y 的数值,与下一个点比较,只输出变化的数据?”好办法!Gerber数据格式定义者们也想到了这一点,也采用了这种方法,这就是有样式数据。

下面就是一段无样式数据与有样式数据的比较。

所有数据 有样式数据 X560Y230D2 X560Y230D2X670Y305D1 X670Y305D1X700Y305D1 X700D1 当机器执行完一句命令后它并没有把数据删除,再执行下一句时,它只是把有的数据填进去而生成一个新的坐标。如机器执行完第二句时,它的存储器中的数据是X-067,Y-0305(假定格式是英制2-3),在读入第三句时机器把07填进X,Y没有就跳过,那么新的数据就是X-07,y-0305。

如果您的设计软件在生成Gerber数据时有自动排序功能,那您使用这种数据格式会很有效果。同时它不象数据格式和省零方式那样必须知道,所有的光绘机及光绘处理软件都支持两种数据。

有样式命令

有样式数据是一种很好的方法,这种方法同样也适用于命令。比如说,您有一段连续的线条要画,那么在Gerber中就表现为一长串以D01结束的块(block),为什么不能把它们省略直到下一个不同的命令出现呢?当然可以,这种处理方法就是有样式命令方式。

D1 not modal

D1 modal

X560Y230D2

X560Y230D2

X670Y305D1

X670Y305D1

X700D1

X700

X730D1

X730

X760D1

X760

Y335D1

Y335D1

由上表看来,我们都希望所有命令都使用有样式命令。可是总有一两处不如意的地方,首先是闪烁命令D3/D03,有许多光绘机非常的执着地希望在每一个闪烁命令后能看到D3/D03。如MDA公司的FIRE9000系列,我们在CAM工作站上很清楚的看到焊盘,可是光绘出的胶片上就是没有,后来我们在一些闪烁命令后加上D03,问题就得到了解决。所以如果您遇到这种情况,不妨试一试无样式数据(No modal)。

另外一个不安份的命令是画圆弧命令G02/G03,许多光绘机在G02/G03命令时必须使用画直线命令——G01。

WordPress 中有一个“多站点”模式(multisite),即通过一个WordPress 程序管理多个站点。其默认是不开启的,如果你开启了但又想恢复为原来的“单站点”模式,该如何做?

(注意:本文不会说明如何开启WordPress 的“多站点”模式,若不知,请自行搜索。)

步骤如下:

1、备份网站数据!(安全第一,有备无患);

2、通过ftp 或者在线修改 或者 下载修改又上传 等方式对WordPress 安装根目录下的 wp-configphp 进行 *** 作;

3、删除下的代码:

1

2

3

4

5

6

7

define( 'MULTISITE', true );

define( 'SUBDOMAIN_INSTALL', false );

$base = '/wordpress/';

define( 'DOMAIN_CURRENT_SITE', 'localhost' );

define( 'PATH_CURRENT_SITE', '/wordpress/' );

define( 'SITE_ID_CURRENT_SITE', 1 );

define( 'BLOG_ID_CURRENT_SITE', 1 );

4、在 wp-configphp 中将以下代码的 ture 改为 false;

1

define('WP_ALLOW_MULTISITE', true);

5、新建或者修改根目录下的 htaccess 文件,添加以下代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

RewriteEngine On

RewriteBase /wordpress/

RewriteRule ^index\php$ - [L]

# uploaded files

RewriteRule ^([_0-9a-zA-Z-]+/)files/(+) wp-includes/ms-filesphpfile=$2 [L]

# add a trailing slash to /wp-admin

RewriteRule ^([_0-9a-zA-Z-]+/)wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]

RewriteCond %{REQUEST_FILENAME} -d

RewriteRule ^ - [L]

RewriteRule ^([_0-9a-zA-Z-]+/)(wp-(content|admin|includes)) $2 [L]

RewriteRule ^([_0-9a-zA-Z-]+/)(\php)$ $2 [L]

RewriteRule indexphp [L]

6、通过 phpMyAdmin 或其他方式删除数据库中以下的表(table):

wp_blogs

wp_blog_versions

wp_registration_log

wp_signups

wp_site

wp_sitemeta

然后,就没有然后了。

以上就是关于如何用Excel *** 作Oracle全部的内容,包括:如何用Excel *** 作Oracle、sas读取csv数据空、谁会用Essamp配置Apache+php+Mysql,帮个忙吧,谢谢了,多少分都行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存