搜档网
当前位置:搜档网 › 官方-R数据导入导出

官方-R数据导入导出

官方-R数据导入导出
官方-R数据导入导出

R 数据的导入和导出

Next: Notes

R 数据的导入和导出

这是从R中导入或导出数据的一个指导手册。

本文档的当前版本为0.01 β。该文档译自 R-2.6.1 文档(2007年11月26日)。丁国徽(ghding@https://www.sodocs.net/doc/224548966.html,)译。

本文档的一些发布信息放置在https://www.sodocs.net/doc/224548966.html,/R/R-doc/。

ISBN 3-900051-10-0

?Notes: 说明

?Introduction: 绪论

?Spreadsheet-like data: 电子表格类似的数据

?Importing from other statistical systems: 导入其它统计软件的数据?Relational databases: 关系数据库

?Binary files: 二进制文件

?Connections: 连接

?Network interfaces: 网络接口

?Reading Excel spreadsheets: 读取Excel表格文件

?References: 参考文献

?Function and variable index: 函数和变量索引

?Concept index: 概念索引

Next: Introduction, Previous: Top, Up: Top

说明

?Copyright: 版权声明

?Words from the Translator: 译者前言

?Acknowledgements: 致谢

Next: Words from the Translator, Up: Notes

版权声明

英文文档版权声明:

Copyright ? 2000–2006 R Development Core Team

Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the R Development Core Team.

参考译文如下(具体以英文原文为准):

版权? 2000–2007 R Development Core Team

在遵守并包含本文档版权声明的前提下,制作和发布本文档的完整拷贝是允许的。并且,所有这些拷贝均受到本许可声明的保护。

在遵守上述完整拷贝版本有关版权声明的前提下,拷贝和发布基于本文档完整拷贝的修改版本是允许的,并且,发布所有通过修改本文档而得到的工作成果,须使用与本文档的许可声明一致的许可声明。

在遵守上述修改版本版权声明的前提下,拷贝和发布本文档其它语言的翻译版本是允许的,如果本许可声明有经 R 核心开发小组(R Development Core Team)核准的当地化译本,则遵循当地化译本。

关于本中文翻译文档的版权声明:

本文档为自由文档(GNU FDL),在GNU自由文档许可证

(https://www.sodocs.net/doc/224548966.html,/copyleft/fdl.html)下发布,不明示或者暗示有任何保证。本文档可以自由复制,修改,散布,但请保留使用许可声明。

Next: Acknowledgements, Previous: Copyright, Up: Notes

译者前言

不能期望一个软件可以做所有的事情1。R 也不例外。因此, R 需要和其它东西协作。包括我们人类,需要我们输入数据,导出数据。包括我们的其它软件,Excel,SPSS,等等,数据格式都是特异的,需要R 特别处理。包括我们的数据库系统,R 不是用来管理数据的,所以需要专业的数据库帮忙。也包括不同机器间,上面编译的 R 也是需要交换数据。这一册文档就是描述这些事情的。

R 的主要目的就是分析数据。虽然,你可以用它来处理文档,画个奥运会的鸟巢,R 的主要目的还是数据分析。这是专业化个性化的时代,特色取胜。

这个文档在几年前就写了一些。很实用的一个文档。开发人员可以大致了解 R 和其它软件大致的通讯情况,非开发人员至少可以了解, R 通过包能直接读取Excel表格。

已经是凌晨了,不多写了。

任何问题和建议可以给Email!

感谢身边的朋友!

丁国徽

Email:ghding@https://www.sodocs.net/doc/224548966.html,

2008年1月6日

Previous: Words from the Translator, Up: Notes

致谢

手册中关系数据库的内容部分基于Douglas Bates 和 Saikat DebRoy早期写的一个手册。本手册主要由 Brian Ripley 编写。

这里用到很多扩展包都是由自愿者贡献。这里提到的包以及主要作者如下,

CORBA Duncan Temple Lang

foreign Thomas Lumley, Saikat DebRoy, Douglas Bates, Duncan Murdoch and Roger Bivand

hdf5Marcus Daniels

ncdf David Pierce

ncvar Juerg Schmidli

rJava Simon Urbanek

RMySQL David James and Saikat DebRoy

RNetCDF Pavel Michna

RODBC Michael Lapsley and Brian Ripley

RSPerl Duncan Temple Lang

RSPython Duncan Temple Lang

SJava John Chambers and Duncan Temple Lang

XML Duncan Temple Lang

Brian Ripley 是实现R的连接(connection)支持的作者。

Next: Spreadsheet-like data, Previous: Notes, Up: Top

1 绪论

尽管大多数读者觉得统计分析非常有趣,但为统计分析读入数据以及把结果导出到其它系统以方便报表编写可能是一件比统计分析更花时间和难办的差事。

本手册描述了 R 自身以及从 CRAN 获得的一些包里面的数据导入和导出功能。这里描述的一些包可能还正在开发,但它们已经提供了一些非常有用的功能了。

除非特别说明,本手册中描述的所有功能可以在各种平台运行的R 中使用。

通常,如R一类的统计系统特别不适合处理大尺度的数据。其它一些系统在这方面可以比R作的好。本手册的部分要点是建议用户可以用其它系统做数据处理工作而不是用 R 里面重复的功能(例如,Therneau 和 Grambsch (2000) 就提到他们喜欢在SAS里面进行数据处理,然后才用 S 的包survival进行数据分析)。现在,还有几个包允许用其它编程语言(如Java, perl 和 python)开发的函数直接整合进R代码里面。这样就可以更加方便地用这些语言的功能。(见Omegahat项目(https://www.sodocs.net/doc/224548966.html,)的SJava, RSPerl和RSPython包,和来自 CRAN的rJava包)

值得注意到是 R 和 S 一样都来自Unix的小的可重用工具的传统,因此,在数据导入前和结果导出后用awk 和 perl 等工具处理数据都是值得推崇的。Becker, Chambers & Wilks (1988, 第 9 章)中的案例分析就是这样的一个例子。其中,在 S 数据输入前用Unix工具检验和处理数据。 R 自己也是采用这种策略,比如用 perl 而不是R 处理自身的帮助文件数据库,函数 read.fwf

开始就是调用一个 perl代码直到后来明确在运行时不能依赖 perl。现在,传统的Unix工具被很广泛的使用,包括在Windows系统上。

?Imports: 导入

?Export to text files: 导出到文本文件中

?XML: XML 文件

Next: Export to text files, Previous: Introduction, Up: Introduction 1.1 Imports 导入

导入 R 的数据中最容易的格式是简单的文本文件。对于小型或中型的问题,这种格式都可以接受的。从文本文件导入数据的原始函数(primary function)是scan。电子表格类似数据(Spreadsheet-like data)一章中讨论的大多数比较便利的函数都是基于这个原始函数。

但是,所有的统计顾问们对客户用软盘或光盘提交一些私有的二进制数据(比如,`Excel 电子表格'或`SPSS文件')都比较熟悉。通常,可以做的最简单的事情是用原始软件把数据用文本文件导出(而统计顾问们为了这个目的会在他们电脑里面安装大多数常用的软件)。不过,这不会总是可能的2。在从其它统计软件中导入数据(Importing from other statistical systems)一章中,我们会讨论一些可以在 R 里面直接读取这些文件的工具。对 Excel 电子表格,读取Excel电子表格(Reading Excel spreadsheets)一章对可以获得的相关方法进行了总结。

在很少的一些例子中,出于简洁和快速访问考虑,数据以二进制格式保存。这种情况下一个例子是我们已经见过几次的图像数据。它通常以二进制流的方式保存然后在内存里面呈现,而且可能在数据前面加个信息头。这种数据格式在二进制文件(Binary files)和二进制连接(Binary connections)部分都有所讨论。

对于大的数据库数据,通常要借助数据库管理系统(Database management system,DBMS)来处理。我们可以通过DBMS从数据库里面提取没有格式的文本文件,但是对于大多数这一类型的DBMS,我们可以直接通过 R 的包来实现数据提取操作:见关系数据库(Relational databases)部分。通过网络连接来导入数据在网络接口(Network interfaces)一章讨论。

Next: XML, Previous: Imports, Up: Introduction

1.2 导出到文本文件中

从 R 里面导出结果通常是一个很少争论的事情,但是实际操作中仍然有一些问题。在知道目标应用软件前提下,通常把文本文件作为最为便利的中间转换工具。(如果需要二进制文件,见二进制文件(Binary files)一章)。

函数 cat 是导出数据的函数的基础。它有一个file参数和append。通过连续地调用 cat 对一个文本文件写入。最好的方式是,特别需要多次这样做的时候,首先为写入或添加文本打开一个 file 连接,然后用cat连接,最后关掉(close)它。

最常见的工作是把一个矩阵或数据框以数字的矩形网格方式写入文件中,而且还可能保留行列的标签。这可以通过函数write.table 和 write 来完成。函数write仅可以写出一个矩阵或向量的特定列(和对一个矩阵进行转置)。函数write.table 更为便利,它可把一个数据框(或一个可以强制转换为数据框的对象)以包含行列标签的方式写出。

在把一个数据框写入到一个文本文件中时,有许多问题需要考虑。

1.精度问题

大多数通过这些函数对实/复数的转换是全精度的,但是用write时,精

度由options(digits)的当前设置确定。如果需要更多的控制,在一个数据框上逐列使用 format 。

2.首行问题

R 倾向在首行不出现表示行名字的条目,因此在文件里面

dist climb time

Greenmantle 2.5 650 16.083

...

其它一些系统需要给行名字一个条目(可能为空),此时,可以通过在

write.table 中设置参数https://www.sodocs.net/doc/224548966.html,s = NA 来实现。

3.分隔符问题文件中常用的字段分隔符是逗号,因为在英语语系的国家,

逗号几乎不可能出现在任何字段中。这种文件被称为 CSV(逗号分隔值)文件,对应的包装函数(wrapper function) write.csv提供了适当的

默认值。在一些本地系统中,逗号作为十进制位中的小数点(在write.csv 函数中设置参数dec = ",")3,此时CSV文件以分号作为字段分隔符:write.csv2 设置了适当的默认值。

用分号或制表符(sep = "\t")可能是一种比较安全的选择。

4.缺损值问题默认情况下,缺损值以 NA 形式输出,但这可以通过参数 na

来改变。注意,NaN 在write.table里面以 NA 看待,但在cat 或 write 里面是区别对待的。

5.被引号括起的字符串默认情况下,字符串被引号括起(包括行列的名字)。

参数 quote 控制着字符和因子变量的引号引用问题。

需要注意字符串中的引号嵌套问题。三种有用的形式如下

> df <- data.frame(a = I("a \" quote"))

> write.table(df)

"a"

"1" "a \" quote"

> write.table(df, qmethod = "double")

"a"

"1" "a "" quote"

> write.table(df, quote = FALSE, sep = ",")

a

1,a " quote

逃逸(Escape)的第二种形式常用于电子表格中。

包MASS中的函数 write.matrix 为写矩阵提供了一种专用的接口。它同时提供了以区块方式写的可选项,这样可以降低内存的使用。

用 sink 可能把标准 R 输出重定向到一个文件中,因此捕获了 print 语句(可能是暗含的)的输出。通常,这不是最有效的办法,options(width)设置可能需要增加。

包foreign里面的函数 write.foreign 用 write.table 产生文本文件,同时编写一个可以让另外一个统计包读入该文本文件的代码文件。现在支持导出到SPSS 和 Stata。

Previous: Export to text files, Up: Introduction

1.3 XML 文件

当从一个文本文件中读取数据时,用户有责任知道并且按习惯创建文件,比如,在导出问文本文件(Export to text files)一节中提到的注释字符,是否有信息头行,分隔符,缺损值的描述方式(等等)。标签语言既可以描述内容又可以定义内容的结构,这样可以使一个文件的内容自我明了。此时,不需要为读取这些数据的软件专门提供这些细节信息。

可扩展标签语言(eXtensible Markup Language)–通常简化为 XML –可用于提供这样的结构,不仅能描述标准数据集也可以描述更复杂的数据结构。 XML 现在变得非常流行,并且作为常规数据标签和交换的标准。它被各种团体所采用,从地理数据(如地图),图像展示4到数学等。

包XML为在 R 和 S-PLUS 读写XML文档提供了通用的工具。它让我们可以很容易的使用这种近年出现的技术。多位研究人员正在探索如何在其它事情中用 XML 描述在不同应用软件中共享的数据集;存储不同系统共享的 R 和 S-PLUS 对象;通过 SVG (可扩展矢量图, Scalable Vector Graphics,XML 的一种针对矢量

图应用的变种)描述图像;描述函数文档;生成“生动的”含有文本,数据和代码的分析/报告。

对XML包里面工具的描述已经超出本文档内容范围:详细信息和例子见该包的主页(https://www.sodocs.net/doc/224548966.html,/RSXML)。 CRAN里面的包StatDataML是基于XML包的一个例子。

Next: Importing from other statistical systems, Previous: Introduction, Up: Top

2 电子表格类似的数据

?Variations on read.table: read.table的变化样式

?Fixed-width-format files: 固定宽度格式的文件

?Data Interchange Format (DIF): 数据交换格式(DIF)

?Using scan directly: 直接使用scan函数

?Re-shaping data: 数据重塑

?Flat contingency tables: 无格式列联表

在导出为文本文件(Export to text files)一节,我们可以看到电子表格类似的文本文件有一系列的变化样式。在这些样式中,数据以矩形格子状呈现,而且还可能包括行列标签。在本节,我们考虑把这种文件导入 R。

Next: Fixed-width-format files, Previous: Spreadsheet-like data,

Up: Spreadsheet-like data

2.1 read.table的变化样式

函数 read.table 是读取矩形格子状数据最为便利的方式。因为实际可能遇到的情况比较多,所以预设了一些函数。这些函数调用了 read.table 但改变了它的一些默认参数。

注意,read.table 不是一种有效地读大数值矩阵的方法:见下面的 scan 函数。一些需要考虑到问题是:

1.编码问题

如果文件中包含非-ASCII字符字段,要确保以正确的编码方式读取。这

是在UTF-8的本地系统里面读取Latin-1文件的一个主要问题。此时,可以如下处理

read.table(file("file.dat", encoding="latin1"))

注意,这在任何可以呈现Latin-1名字的本地系统里面运行。

2.首行问题

我们建议你明确地设定 header 参数。按照惯例,首行只有对应列的字段而没有行标签对应的字段。因此,它会比余下的行少一个字段。(如果需要在 R 里面看到这一行,设置 header = TRUE。)如果要读取的文件里面有行标签的头字段(可能是空的),以下面的方式读取

read.table("file.dat", header = TRUE, https://www.sodocs.net/doc/224548966.html,s = 1)

列名字可以通过 https://www.sodocs.net/doc/224548966.html,s 显式地设定;显式设定的名字会替换首行里面的列名字(如果存在的话)。

3.分隔符问题

通常,打开文件看一下就可以确定文件所使用的字段分隔符,但对于空白分割的文件,可以选择默认的sep = "" (它能使用任何空白符作为分隔符,比如空格,制表符,换行符), sep = " " 或者 sep = "\t"。注意,分隔符的选择会影响输入的被引用的字符串。

如果你有含有空字段的制表符分割的文件,一定要使用 sep = "\t"。

4.引用默认情况下,字符串可以被 " 或 ' 括起,并且两种情况下,引号

内部的字符都作为字符串的一部分。有效的引用字符(可能没有)的设置由参数 quote 控制。对于sep = "\n",默认值改为 quote = ""。

如果没有设定分隔字符,在被引号括起的字符串里面,引号需要用 C格式的逃逸方式逃逸,即在引号前面直接加反斜杠 \。

如果设定了分隔符,在被引号括起的字符串里面,按照电子表格的习惯,把引号重复两次以达到逃逸的效果。例如

'One string isn''t two',"one more"

可以被下面的命令读取

read.table("testfile", sep = ",")

这在默认分隔符的文件里面不起作用。

5.缺损值默认情况下,文件是假定用 NA 表示缺损值,但是,这可以通过

参数 na.strings 改变。参数 na.strings 是一个可以包括一个或多个缺损值得字符描述方式的向量。

数值列的空字段也被看作是缺损值。

在数值列,值 NaN,Inf 和 -Inf 都可以被接受的。

6.尾部空字段省略的行

从一个电子表格中导出的文件通常会把拖尾的空字段(包括它们的分隔符)忽略掉。为了读取这样的文件,必须设置参数 fill = TRUE。

7.字符字段中的空白

如果设定了分隔符,字符字段起始和收尾处的空白会作为字段一部分看待的。为了去掉这些空白,可以使用参数 strip.white = TRUE。

8.空白行

默认情况下,read.table 忽略空白行。这可以通过设置

blank.lines.skip = FALSE 来改变。但这个参数只有在和 fill = TRUE 共同使用时才有效。这时,可能是用空白行表明规则数据中的缺损样本。

9.变量的类型

除非你采取特别的行动,read.table 将会为数据框的每个变量选择一个合适的类型。如果字段没有缺损以及不能直接转换,它会按 logical,integer, numeric 和 complex 的顺序依次判断字段类型。5如果所有这些类型都失败了,变量会转变成因子。

参数 colClasses 和 as.is 提供了很大的控制权。 as.is 会抑制字符向量转换成因子(仅仅这个功能)。 colClasses运行为输入中的每个列设置需要的类型。

注意,colClasses 和 as.is 对每列专用,而不是每个变量。因此,它对行标签列也同样适用(如果有的话)。

10.注释

默认情况下,read.table 用 # 作为注释标识字符。如果碰到该字符(除了在被引用的字符串内),该行中随后的内容将会被忽略。只含有空白和注释的行被当作空白行。

如果确认数据文件中没有注释内容,用 comment.char = "" 会比较安全(也可能让速度比较快)。

11.逃逸

许多操作系统有在文本文件中用反斜杠作为逃逸标识字符的习惯,但是

Windows系统是个例外(在路径名中使用反斜杠)。在 R 里面,用户可

以自行设定这种习惯是否用于数据文件。

read.table 和 scan 都有一个逻辑参数 allowEscapes。从 R 2.2.0 开

始,该参数默认为否,而且反斜杠是唯一被解释为逃逸引用符的字符(在前面描述的环境中)。如果该参数设为是,以C形式的逃逸规则解释,也

就是控制符如 \a, \b, \f, \n, \r, \t, \v,八进制和十六进制如 \040 和 \0x2A 一样描述。任何其它逃逸字符都看着是自己,包括反斜杠。

常用函数 read.csv 和 read.delim 为 read.table 设定参数以符合英语语系本地系统中电子表格导出的CSV和制表符分割的文件。这两个函数对应的变种read.csv2 和 read.delim2 是针对在逗号作为小数点的国家使用时设计的6。

如果 read.table 的可选项设置不正确,错误信息通常以下面的形式显示

Error in scan(file = file, what = what, sep = sep, :

line 1 did not have 5 elements

或者

Error in read.table("files.dat", header = TRUE) :

more columns than column names

这些信息可能足以找到问题所在,但是辅助函数 count.fields 可以进一步的深入研究问题所在。

读大的数据格子(data grid)时,效率最重要。设定 comment.char = "",以原子向量类型(逻辑型,整型,数值型,复数型,字符型或原味型)设置每列的colClasses ,给定需要读入的行数 nrows (适当地高估一点比不设置这个参数好)等措施会提高效率。见下面的例子

Next: Data Interchange Format (DIF), Previous: Variations on read.table, Up: Spreadsheet-like data

2.2 固定宽度格式的文件

有时,数据文件没有字段分隔符,但在预先设定的列里面含有字段的内容。在穿孔卡片的时代,这非常普遍。现在,有时也用来节省文件空间。

函数 read.fwf 提供了一种简单的方式来读取这样的文件。它会制定一个向量以保存字段的宽度。该函数把文件整行地读入内存,分割结果字符串,导出一个临

时的制表符分割的文件,然后调用 read.table。这对小文件已经足够了,但对于更复杂的东西,我们推荐采用 perl 一类的编程语言对文件进行预处理。

函数 read.fortran 是处理固定格式文件的一种类似的函数。它使用 Fortran

格式的列规范。

Next: Using scan directly, Previous: Fixed-width-format files,

Up: Spreadsheet-like data

2.3 数据交换模式(DIF)

曾经用于电子表格类似的数据的旧格式是DIF,即数据交换格式。

函数 read.DIF 提供了读取这种文件的简单方式。它为每列设置类型的参数和read.table 类似。

在Windows里面,电子表格通常在剪贴板里面以这种格式保存电子表格数据;read.DIF("clipboard") 可以直接从剪贴板里面读取数据。这种方法比用read.table("clipboard") 处理含有空单元的电子表格稳健。

Next: Re-shaping data, Previous: Data Interchange Format (DIF),

Up: Spreadsheet-like data

2.4 直接使用scan函数

read.table 和 read.fwf 都是先用 scan 读文件,然后处理 scan 的结果。它们非常便利,但有时直接使用 scan 效果会比较好。

函数 scan 有很多参数。大多数参数在函数 read.table 里面也存在。其中最为关键的参数是 what,它是用来指定从文件中读出的变量的模式(mode)的列表。如果该列表已经被命名,它的名字会被用作返回列表的分量。模式可以是数值,字符或复数,并且常常用例子来指定,比如 0, "" 或 0i。例如,

cat("2 3 5 7", "11 13 17 19", file="ex.dat", sep="\n")

scan(file="ex.dat", what=list(x=0, y="", z=0), flush=TRUE)

返回一个有三个分量的列表并且丢弃文件中的第四列。

还有一个非常有用的函数readLines。如果你想把所有行读入 R 然后进一步处理,可以用这个便利的函数。

scan 的一个最普遍的应用是读入大的矩阵。假定文件matrix.dat 只是包括一个 200 x 2000 的矩阵7,那么我们可用

A <- matrix(scan("matrix.dat", n = 200*2000), 200, 2000, byrow = TRUE)

在一个测试里面,这花费了1秒钟(在Linux系统测试的,同样电脑上在Windows 系统下则需要3秒钟),而

A <- as.matrix(read.table("matrix.dat"))

花费了10秒钟(和更多的内存),另外,

A <- as.matrix(read.table("matrix.dat", header = FALSE, nrows = 200, comment.char = "", colClasses = "numeric"))

花费了7秒钟。造成这种差别的原因差不多完全由于读2000分开的短列的时间开支所致:如果它们的长度是2000, scan花费9秒,而 read.table 在比较高效地使用情况(特别是设定colClasses)下需要18秒;但缺乏技巧地使用read.table时则需要125秒!

注意,时限测试依赖于读的类型和数据本事。下面是一个读取一百万个不同整数的例子:

writeLines(as.character((1+1e6):2e6), "ints.dat")

xi <- scan("ints.dat", what=integer(0), n=1e6) # 0.77s

xn <- scan("ints.dat", what=numeric(0), n=1e6) # 0.93s

xc <- scan("ints.dat", what=character(0), n=1e6) # 0.85s

xf <- as.factor(xc) # 2.2s

DF <- read.table("ints.dat") # 4.5s

以及一百万个小集合代码的例子:

code <- c("LMH", "SJC", "CHCH", "SPC", "SOM")

writeLines(sample(code, 1e6, replace=TRUE), "code.dat")

y <- scan("code.dat", what=character(0), n=1e6) # 0.44s

yf <- as.factor(y) # 0.21s

DF <- read.table("code.dat") # 4.9s

DF <- read.table("code.dat", nrows=1e6) # 3.6s

注意,这些时限测试严重依赖操作系统(Windows下面的基本读取所花的时间至少是Linux系统下面的两倍)和垃圾收集器的精度。

Next: Flat contingency tables, Previous: Using scan directly,

Up: Spreadsheet-like data

2.5 数据重塑

有时,电子表格数据以一种紧凑的格式存在。它会给出各个受试者的协变量。而每个受试者后面跟着全部的观测值。R 的建模函数需要观测值在一列内。考虑下面来自有重复的MRI脑测试样本数据

Status Age V1 V2 V3 V4

P 23646 45190 50333 55166 56271

CC 26174 35535 38227 37911 41184

CC 27723 25691 25712 26144 26398

CC 27193 30949 29693 29754 30772

CC 24370 50542 51966 54341 54273

CC 28359 58591 58803 59435 61292

CC 25136 45801 45389 47197 47126

每个受试者有两个协变量(covariate)和最多4个测量。该数据从Excel里面导出,文件名为 mr.csv 。

我们可以用函数 stack 来帮助操作以给出唯一的相应。

zz <- read.csv("mr.csv", strip.white = TRUE)

zzz <- cbind(zz[gl(nrow(zz), 1, 4*nrow(zz)), 1:2], stack(zz[, 3:6]))

结果为

Status Age values ind

X1 P 23646 45190 V1

X2 CC 26174 35535 V1

X3 CC 27723 25691 V1

X4 CC 27193 30949 V1

X5 CC 24370 50542 V1

X6 CC 28359 58591 V1

X7 CC 25136 45801 V1

X11 P 23646 50333 V2

...

函数 unstack 是相反操作的函数,因此在导出数据时可能非常有效。

实现这个的另外一种方法是 reshape,如

> reshape(zz, idvar="id",timevar="var",

varying=list(c("V1","V2","V3","V4")),direction="long")

Status Age var V1 id

1.1 P 23646 1 45190 1

2.1 CC 26174 1 35535 2

3.1 CC 27723 1 25691 3

4.1 CC 27193 1 30949 4

5.1 CC 24370 1 50542 5

6.1 CC 28359 1 58591 6

7.1 CC 25136 1 45801 7

1.2 P 23646 2 50333 1

2.2 CC 26174 2 38227 2

...

函数 reshape 有比stack 更为复杂的语法。但是它可以处理比前面例子中列的数目更多的`长'格式数据。利用 direction="wide",reshape 也可以进行相反方向的操作。

Previous: Re-shaping data, Up: Spreadsheet-like data

2.6 无格式列联表

用数组方式展示高维列联表示很不方便的。在分类数据分析中,这种信息常常以含有边的带行列组合的因子水平对应的单元计数的二维数组来体现。行和列是典型的“参差”排列,因为只在它们改变时才显示标签。一个明显的习惯是,行从顶往底部读,而列从左往右读。在 R 里面,这种“无格式”的列联表可以用函数 ftable 创建。 ftable 用一个适合的打印方法创建类 "ftable" 的对象。

举个简单的例子,考虑 R 的标准数据集 UCBAdmissions。这是一个3维列联表,用于对1973年UC Berkeley 研究生部六个最大的系的学生申请按照入学和性别的分类。

> data(UCBAdmissions)

> ftable(UCBAdmissions)

Dept A B C D E F

Admit Gender

Admitted Male 512 353 120 138 53 22

Female 89 17 202 131 94 24

Rejected Male 313 207 205 279 138 351

Female 19 8 391 244 299 317

这种显示方式无疑比数据的3维数组描述方式更有用。

还有一个函数 read.ftable 用于从文件中读取无格式的列联表。

为了处理试图准确地描述行和列变量名字和水平信息的列联表变体,这个函数还有一些其它参数。read.ftable 的帮助页面有一些非常有用的例子。无格式列联表可以用 as.table 转换成数组格式的标准列联表。

注意,无格式列联表的特征就是行(可能还有列)标签的“参差”排列。如果给定行变量水平的所有格子(grid),应该使用函数 xtabs 从这种数据创建列联表,而不是用 read.table 读取数据。

Next: Relational databases, Previous: Spreadsheet-like data, Up: Top

3 导入其它统计软件的数据

在本章,我们研究如何读取其它统计系统生成二进制数据文件问题。最好避免这种问题,但若没法得到原始系统的时候,这种问题又是不可避免的。

?EpiInfo Minitab SAS S-PLUS SPSS Stata Systat: EpiInfo Minitab SAS S-PLUS SPSS Stata Systat

?Octave: Octave

Next: Octave, Previous: Importing from other statistical systems, Up: Importing from other statistical systems

3.1 EpiInfo, Minitab, S-PLUS, SAS, SPSS, Stata, Systat

推荐包foreign提供了导入这些统计系统产生的文件,导出 Stata或SPSS 格式数据的工具。在一些情况下,这些函数可能 read.table 需要的内存少很多。write.foreign (见导出到文本文件(Export to text files))现在支持 SPSS 和 Stata 类型的数据导出机制。

EpiInfo 版本5和6保存的数据是自我描述的固定宽度的文本文件。

read.epiinfo 可以读入这些 .REC 文件到一个 R 数据框。 EpiData 也产生这种格式的数据。

函数 read.mtp 可以导入`Minitab便携式工作表' (Minitab Portable Worksheet)文件。该函数返回一个以工作表作为分量的 R 列表。

函数 read.xport 读入SAS传输格式(XPORT)的文件,并且返回一个数据框的列表。如果你的系统安装了SAS,函数 read.ssd 可用来创建和运行以传输格式

保存 SAS永久数据集(.ssd 或 .sas7bdat)的SAS脚本。它随后调用 read.xport 去读取结果文件。包Hmisc有个类似的函数 sas.get,它也是允许SAS脚本。

函数 read.S 可以读取(32位)Unix或Windows(或其它操作系统)上由S-PLUS 3.x,4.x 或 2000 产生二进制对象。这能读取许多但不是全部的 S 对象:特别是,它只能读取向量,矩阵,数据框和含有这类数据对象的列表。

函数 data.restore 用于读 S-PLUS 的转储数据(data dump)(由 data.dump 创建)。它有同样的限制(除了α平台的转储数据也可被读取)。它还可能读取来自 S-PLUS 5.x 和 6.x 通过data.dump(oldStyle=T) 写出的转储数据。

如果可以访问 S-PLUS,更可靠的方式是在 S-PLUS 里面导出(dump)对象文件然后在 R 里面载入执行(source)该文件。在S-PLUS 5.x 和 6.x 里面,需要用 dump(..., oldStyle=T),对于读入大对象,优先使用用转储文件作为批量的脚本而非source。

函数 read.spss 可以读取 SPSS 里面 `save' 和 `export' 命令创建的文件。它返回一个由被保存数据集中每个变量对应分量的列表。含有值标签的 SPSS 变量可以选择转换为 R 因子。

SPSS 数据入口(Data Entry)是创建数据输入的窗体。默认情况下,它创建一种read.spss不能处理的含有额外格式信息的数据文件。但是,它可能以普通的SPSS 格式导出数据。

Stata 的 .dta 文件是二进制文件格式。函数read.dta 和 write.dta 可以读写版本 5,6,7/SE和8的Stata 文件。有值标签的Stata变量可以选择性地转换为 R 因子(反之也行)。

函数 read.systat 可以读取 Systat 在小字节序机器(little-endian machines)(比如Windows)上保存(SAVE)的矩形的数据文件(mtype = 1)。这些文件的扩展名为 .sys 或 .syd (最近)。

Previous: EpiInfo Minitab SAS S-PLUS SPSS Stata Systat, Up: Importing from other statistical systems

3.2 Octave

Octave 是一种线性代数的数值运算系统(https://www.sodocs.net/doc/224548966.html,),来自包foreign的函数 read.octave 可以读入 Octave 用命令 save -ascii 创建的文本数据格式。该格式支持变量的大多数通用类型,包括标准的原子型(实和复标量/矩阵,和N维数组,字符串,极差(range),和布尔值标量/矩阵)和递归式(结构体(structs),单元(cells)和列表)。

Next: Binary files, Previous: Importing from other statistical systems, Up: Top

4 关系数据库

?Why use a database?: 为什么使用数据库?

?Overview of RDBMSs: 对RDBMs的回顾

?R interface packages: R 的接口包

Next: Overview of RDBMSs, Previous: Relational databases,

Up: Relational databases

4.1 为什么使用数据库?

R 可以很好处理的数据类型是有限的。既然所有R 处理的数据都放在内存中,并且在一个函数的执行过程中会创建一个数据集的多个拷贝,因此R不适合处理很大的数据集。大于一百兆(或少一点)的数据对象会导致 R的内存溢出。

R 不容易支持并发访问数据。也就是说,如果多于一个用户在访问或者更新同一个数据,一个用户的修改对另外一个用户是不可见的。

R 支持数据的永久性,因为用户需要从一个回话中保存数据对象或整个工作表而在随后的会话中再次保存。但被保存数据的格式对 R 是特有的,在其它系统里面不是那么容易被处理。

数据库管理系统(Database Management Systems,DBMSs)和,特别是,关系数据库管理系统(RDBMSs)是为了更好地做这些事情而设计。. 它们加强的地方在于

1.提供对大型数据库中被选择部分的快速访问。

2.强大的针对数据库的列进行汇总和交叉列表(cross-tabulate)的功能。

3.以更有条理的方式存储数据。这比电子表和R的数据框的矩形网格格式更

容易组织。

4.支持运行于不同主机上面的客户端的并发访问,同时加强数据访问的安全

性限制。

5.有能力作为一个服务很多客户端的服务器。

DBMS可能要用到的统计应用的类型是从数据中提取1%的样本,对数据交差列表(cross-tabulate)以产生一个多维的列联表,和为单独的分析从数据库中提取数据组。

Next: R interface packages, Previous: Why use a database?,

Up: Relational databases

4.2 对RDBMs的回顾

已经有很多大型的(也是很贵的)商业的关系数据库管理系统(Informix;Oracle; Sybase; IBM的 DB/2;Microsoft运行在Windows系统上的 SQL Server)和学术的小型系统的数据(如 MySQL,PostgreSQL, Microsoft Access,...)。前者都会强调数据安全性特征。但是界限是很模糊的,比如开源的PostgreSQL 有越来越多的高端特性8,以及`免费'的Informix,Oracle和Sysbase在Linux 系统下面都可以获得。

还有其它常常使用的数据源,包括电子表格,非关系型数据库,甚至文本文件(可能已经压缩过的)。开放数据库互连(Open Database Connectivity,简写为 ODBC)是使用所有这些数据源的标准。它源于 Windows系统(见

https://www.sodocs.net/doc/224548966.html,/data/odbc/),但Linux/Unix系统也实现这个标准。

本章后面描述的所有包都提供了客户端/服务器数据库的客户端。数据库可以放置在一样的机器上或远程(这更常见)。数据库交互时有一个 ISO 标准(事实上有好多种: SQL92 就是 ISO/IEC 9075,也被称为 ANSI X3.135-1992,此外SQL99 也逐步被使用了)的的交互语言SQL (结构化查询语言,Structured Query Language,有时读作`sequel':见 Bowman et al. 1996 以及 Kline 和 Kline 2001)。不同的DBMSs对这个标准都是在一定程度上支持。

?SQL queries: SQL查询

?Data types: 数据类型

Next: Data types, Previous: Overview of RDBMSs, Up: Overview of RDBMSs

4.2.1 SQL 查询

对于常规操作,非常全面的 R 接口可以产生SQL,但是对于复杂操作,只有直接使用 SQL。习惯上,SQL 用大写字母编写,但是很多用户发现在 R 接口函数里面用小写比较方便。

一个关系型DBMS以表格(tables)(或关系(relations))数据库的方式存储数据。数据库的表格和 R 的数据框类似,因为它们都是由同一类型(数值,字符,日期,货币,...)的列(column)或者字段(fields)和包含实体观测数据的行(row)或记录(record)组成。

SQL `查询'是关系数据库里面最常用的操作。典型的查询是下面类型的SELECT 语句

SELECT State, Murder FROM USArrests WHERE Rape > 30 ORDER BY Murder

SELECT t.sch, c.meanses, t.sex, t.achieve

FROM student as t, school as c WHERE t.sch = c.id

SELECT sex, COUNT(*) FROM student GROUP BY sex

SELECT sch, AVG(sestat) FROM student GROUP BY sch LIMIT 10

上面语句的第一条从已经复制到一个数据库表的 R 数据框USArrests 数据中

选择两列,基于第三列做子集操作,并且让结果数据排序。第二条语句连接(join)两个表格 student 和 school,随后返回四列。第三和第四个查询进行了一些交差列表操作然后返回计数和平均值。(五个聚合函数分别是COUNT(*) 以及用于列的 SUM, MAX, MIN 和 AVG)

SELECT查询用FROM选择表,WHERE设定查询条件(或者被AND或OR 分割的多个条件),然后用ORDER BY对结果进行排序。和数据框不一样的是,RDBMS表里面的行最好看作是无序的,如果没有ORDER BY语句,顺序是不确定的。你可以对对不止一列进行排序(辞典排序方式),各个列间用逗号分隔。把DESC放在ORDER BY后面会让结果按降序排列。

SELECT DISTINCT 查询只返回被选中的表中不同的行。

GROUP BY字句选择基于标准的行的子集。如果不止一列被设定(逗号分隔),可以用五个聚合函数中的一个对多维交差分类的数据进行汇总。 HAVING字句可以基于聚合值选择或去掉一些组。

如果SELECT语句含有产生唯一排序的ORDER BY语句, LIMIT字句可加入选择(通过数字)输出行的一个连续的区块。在同时取得一个区块行时,该语句非常(除非排序是唯一的否则它可能不可靠,因为LIMIT字句可用来优化查询。)有用。

还有查询用于创建表(CREATE TABLE,但通常是利用这些接口把一个数据框复制到数据库),INSERT(插入)或DELETE(删除)或UPDATE(更新)数据。可用 DROP TABLE `查询'破坏一个表9。

Kline 和 Kline (2001) 对SQL Server 2000,Oracle,MySQL 和 PostgreSQL 里面SQL语句的实现细节进行了论述。

Previous: SQL queries, Up: Overview of RDBMSs

4.2.2 数据类型

Excel数据导入导出QC操作流程

环境: QC9 WindowsXP Office2007 1. 准备 1、通过Excel导入QC,需要下载Microsoft Excel Add-in: https://www.sodocs.net/doc/224548966.html,/qualitycenter/qc100/msoffice/msexcel/index.h tml 2、安装Microsoft Excel Add-in,安装前需要关闭Excel应用程序,并且以管理员身份运行。 这里注意:如果以前安装过该插件的早期版本,最好将其卸载后再安装。 3、完成安装后,打开Excel表格(以Excel2007为例),点击“加载项”,出现如图所示界中红色框内的“Export To Quality Center”。 图1-1 Export To Quality Center按钮 注意:安装QCMSExcelAddin.rar程序,若Office为2007则安装成功后,会在Excel 菜单栏---工具中多一个Export To Quality Center菜单,若Office为2003则需要拷贝XLSTART文件夹到Office的安装根目录。 2. 数据导入QC 该插件支持将需求,测试计划,缺陷的相关数据从Excel导入QC中,这3者操作步骤基本相同,下面以导入测试计划数据为例说明。 1、首先要求Excel文档的格式要与QC里数据字段相统一,示例格式如下图2-1所示。

图2-1 Excel数据示例 2、选定要你导入QC的内容,(注意:不包括列头)单击菜单“附加组件->Export To Quality Center”,如下图2-2所示。 图2-2 数据导入步骤1输入QC服务器地址 3、输入QC的地址,单击“Next”,如下图2-3所示。 图2-3 步骤2输入用户名密码

数据导入导出

C:\Users\student01>exp ceshi/seentao tablespaces=(system,ceshi) file=d:\ceshi4.d mp C:\Users\student01>exp system/seentao owner=ceshi file=d:\ceshi5.dmp C:\Users\student01>exp ceshi/seentao tablespaces=(system,ceshi) transport_tables pace=y file=d:\ceshi6.dmp Export: Release 10.2.0.1.0 - Production on 星期二8月5 14:33:53 2014 Copyright (c) 1982, 2005, Oracle. All rights reserved. 连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options EXP-00044: 必须以'SYSDBA' 身份连接, 才能进行时间点恢复或可传输的表空间导入EXP-00000: 导出终止失败 C:\Users\student01>imp ceshi/seentao file=d:\ceshi.dmp fromuser=ceshi C:\Users\student01>imp ceshi/seentao file=d:\ceshi.dmp full=y C:\Users\student01>imp ceshi/seentao file=d:\ceshi00.dmp fromuser=ceshi 数据泵导入导出 C:\Users\student01>sqlplus/nolog SQL*Plus: Release 10.2.0.1.0 - Production on 星期二8月5 15:27:06 2014 Copyright (c) 1982, 2005, Oracle. All rights reserved. SQL> conn/as sysdba 连接数据库 已连接。 SQL> select * from dba_directories where directory_name='DATA_PUMP_DIR'; OWNER DIRECTORY_NAME ------------------------------ ------------------------------ DIRECTORY_PATH -------------------------------------------------------------------------------- SYS DATA_PUMP_DIR C:\oracle\product\10.2.0\db_1\admin\orcl\dpdump\ SQL> exit 从Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options 断开 C:\Users\student01>expdp ceshi/seentao dumpfile=ceshi.dmp 数据泵导出数据库 C:\Users\student01>md d:\pump C:\Users\student01>sqlplus/nolog SQL*Plus: Release 10.2.0.1.0 - Production on 星期二8月5 15:39:07 2014 Copyright (c) 1982, 2005, Oracle. All rights reserved.

数据库数据导入导出方法

数据库数据导入导出方法 1逻辑导入 备份方法: 在主机服务器的DOS提示符下输入: EXP USERID=ZLHIS/HIS BUFFER=4096 FILE=D:\20040101.dmp LOG=D:\20040101.log OWNER=(ZLHIS) ROWS=Y INDEXES =Y CONSTRAINTS =Y GRANTS=Y DIRECT=N 表示只导出zlhis用户的数据对象 Buffer:该值越大,导出的时间略短。 File:表示导出的dmp的文件路径 Log:表示导出的日志文件路径 其余参数可以通过exp help=y查询。 2逻辑导出 在主机服务器的DOS提示符下输入: IMP USERID=ZLHIS/HIS FROMUSER=(ZLHIS) TOUSER=(ZLHIS) BUFFER=30720 FILE=D:\20040101.dmp LOG=D:\20040101.log ROWS=Y INDEXES=Y CONSTRAINTS =Y GRANTS =Y SHOW=N COMMIT =Y IGNORE=Y 表示只导入zlhis用户的数据对象 Buffer:该值越大,导入的时间略短。 File:表示导入的dmp的文件路径 Log:表示导入的日志文件路径 Ignore:Oracle在恢复数据的过程中,当恢复某个表时,该表已经存在,就要根据ignore 参数的设置来决定如何操作。若ignore=y,Oracle不执行CREATE TABLE语句,直接将数据插入到表中,如果插入的记录违背了约束条件,比如主键约束,则出错的记录不会插入,但合法的记录会添加到表中。若ignore=n,Oracle不执行CREATE TABLE语句,

MTK手机MauiMETA工具导入导出校准数据操作

MauiMETA _v6.1016导入导出校准 数据操作步骤

一、概述 该软件通过计算机串行(或USB)接口与手机连接,并采用串行(或USB)数据通讯的方式把手机Flash 中的校准数据导入和导出。该软件由德晨电子公司提供。 该软件适用于我公司基于MTK方案项目的手机,未注明支持USB下载的项目无法使用USB传输方式,只能使用串口通讯方式。 二、驱动安装 串口驱动安装:使用USB 转串口的数据线,需要先安装驱动程序 (PL2303_Prolific_DriverInstaller_v1210)。安装驱动时,数据线可不插入在电脑上。 USB驱动安装:使用USB传输方式,需要先安装驱动程式 MTK USB Driver_v1.0948.0,然后点击“exit”退出, USB驱动安装完成。 三、软件安装及操作 1.将“MauiMETA_exe_v6.1016.0”压缩包解压到电脑某个路径。如 D盘根 目录。 2.找到META executable或Service center executable文件夹点 击打开,双击图标打开软件安装包,根据系统提示 一路安装,安装完成后,在桌面找到图标,双击打开,如下 图所示: 3.META导入导出校准数据操作步骤说明。 3.1:第一步,联接META工具,当联接状态的图标显示红色时,表示手机未 联结,此时选择相应的串口(使用串口通讯方式请选择正确的COM口,如COM5,使用USB通讯方式请选择USB COM),并点击Reconnect,如图:

3.2:长按住手机右软键,插入手机下载线,开机,联结成功后,状态指示黄色,表示手机已联结 在标识为2的下拉菜单栏,选择”Update parameter”,如图: 3.3选择Update parameter之后,META会自动弹出Update parameter对话框, 如图所示,去掉图中”Check Section Exist in INI File”与”Check IMEI checksum” 两项,再点击“Change NVRAM DB”按钮,如下图所示:

oracle数据库数据的导入导出

Oracle数据库导入导出命令(备份与恢复) Toad 一个很好的oralce数据库操作与管理工具,使用它可以很方便地导入导出数据表,用户以及整个数据库。今天在这里主要讲一下用命令行来操作oracle数据导入和导出: 备份数据 1、获取帮助: exp help=y 2. 导出一个完整数据库 exp user/pwd@instance file=path full=y 示例:exp system/system@xc file = c:/hehe full =y imp tax/test@tax file=d:/dbbak.dmp full=y 3 、导出一个或一组指定用户所属的全部表、索引和其他对象 exp system/manager file=seapark log=seapark owner=seapark exp system/manager file=seapark log=seapark owner=(seapark,amy,amyc,harold) 示例:exp system/system@xc file=c:/hehe owner=uep 4、导出一个或多个指定表 exp system/manager file=tank log=tank tables=(seapark.tank,amy.artist) 示例:exp system/system@xc file=c:/heh tables=(ueppm.ne_table) 恢复数据 1. 获取帮助 imp help=y 2. 导入一个完整数据库 imp system/manager file=bible_db log=dible_db full=y ignore=y 3. 导入一个或一组指定用户所属的全部表、索引和其他对象 imp system/manager file=seapark log=seapark fromuser=seapark imp system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold) 4. 将一个用户所属的数据导入另一个用户 imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy imp system/manager file=tank log=tank fromuser=(seapark,amy) touser=(seapark1, amy1) 5. 导入一个表 imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b) ************************ **************************** 利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回Oracle 数据库中去。 1. 简单导出数据(Export)和导入数据(Import) Oracle支持三种类型的输出: (1)表方式(T方式),将指定表的数据导出。 (2)用户方式(U方式),将指定用户的所有对象及数据导出。 (3)全库方式(Full方式),将数据库中的所有对象导出。 数据导出(Import)的过程是数据导入(Export)的逆过程,它们的数据流向不同。

Excel到SQLServer数据库的数据导入导出技术研究

Excel到S QL Server数据库的数据导入导出技术研究3 王晓刚 杨春金 (武汉理工大学信息工程学院 武汉 430063) 摘 要 介绍Del phi中,采用新一代数据访问技术dbExp ress和OLE技术来实现Excel数据表到S QL Server数据库的数据导入和导出,及其在高速公路车辆查询系统中的应用。 关键词 dbExp ress S QL server Excel OLE 中图分类号 TP317.3 1 引言 办公自动化信息管理系统的用户常常会遇到需要把由Excel存储的数据资料导入到S QL Server 数据库,同时又要把S QL Server数据库中的数据导出到Excel数据表的问题。不同的编程语言有不同的解决方法。本文介绍应用Del phi编程来实现Excel数据表到S QL Server数据库的数据导入导出技术。 2 基本思路 OLE自动化是W indows应用程序操纵另一个程序的一种机制。被操纵的一方称为自动化服务器,操纵自动化服务器的一方称为自动化控制器。通过引用这些对象实现对自动化服务器的调用,然后通过设置对象的属性和使用对象的方法操纵自动化服务器,实现两者之间的通讯。 Del phi在数据库方面提供的强大又富有弹性的能力给广大编程人员带来了方便。dbExp ress是Del phi下一代的数据访问技术。提供高效率数据访问以及提供跨平台能力的数据访问引擎。dbEx2 p ress包含了7个组件,它们是TS QLConnecti on、TS QLDataSet、TS QLQuery、TS QLSt oredPr oc、TS QLT2 able、TS QLMonit or和TSi m p le DataSet,这些组件的功能就是让应用程序连接后端数据库,访问数据表中的数据,把修改的数据更新回数据库中以及让程序员观察dbExp ress向后端数据库下达命令等。 Del phi完全支持OLE应用程序自动化,提供的Servers栏控件可以很容易开发OLE自动化控制器实现对OLE自动化服务器的调用。在Del phi内部运行OLE自动化程序需要在U ses语句中加入Co2 mobj来开始自动化程序。通过调用Create O le Ob2 ject来检索一个自动化对象,Create O le Object调用大量系统内部的OLE函数,创建一个I dis patch的实例,并从Variant中返回一个Del phi变量类型,可以根据不同的环境提供不同的功能,这里我们使用Variant来引用Excel内部的对象以建立Del phi与Excel之间的连接。并采用dbExp ress建立Del phi 和S QL Server之间的连接,来实现Excel数据表到S QL Server数据库的数据导入和导出。 3 dbExp ress访问S QL Server技术 dbExp ress通过TS QLConnecti on组件同S QL Server数据库进行连接。双击TS QLConnecti on,就会弹出它的组件编辑器,在这个组件编辑器里,我们就可以定义连接数据库的类型,数据库名称,登陆帐号、密码等信息。以下就是我们连接名为DB2 SERVER的数据库服务器的具体情况: D river Name=MSS QL//数据库类型 Host N a me=DBSERVER//数据库服务器 Database=ETEST//数据库名 U ser_Na me=sa//登陆帐号 Pass word=sa//登陆密码 B l obSize=-1 LocaleCode=0000 MSS QL Transls olati on=ReadComm ited OS Authenticati on=False 在连接上数据库以后,dbExp ress提供了两种方法:一是使用TSi m p le DataSet组件;二是使用TS QLDataSet搭配T DataSetPr ovider和TClient D ata2 Set组件来对数据库进行访问。在实现简单数据访 85 计算机与数字工程 第35卷3收到本文时间:2006年6月8日 作者简介:王晓刚,男,硕士研究生,研究方向:网络设计及信息管理。杨春金,男,副教授,研究方向:信号与信息处理。

PLSQL Developer导入导出数据库方法及说明

PL/SQL Developer导入导出数据库方法及说明 2011-07-26 13:05 leeli1987 CSDN博客字号:T| T 本文主要介绍了利用PL/SQL Developer导入或导出数据库的步骤以及导入导出过程中的一些说明,希望能对您有所帮助。 AD:51CTO学院:IT精品课程在线看! PL/SQL Developer是Oracle数据库中用于导入或导出数据库的主要工具,本文主要介绍了利用PL/SQL Developer导入和导出数据库的过程,并对导入或导出时的一些注意事项进行了说明,接下来我们就一一介绍。 导出步骤: 1 tools ->export user object 选择选项,导出.sql文件。 2 tools ->export tables-> Oracle Export 选择选项导出.dmp文件。 导入步骤: 注:导入之前最好把以前的表删除,当然导入另外数据库除外。 1 tools->import tables->SQL Inserts 导入.sql文件。 2 tools->import talbes->Oracle Import然后再导入dmp文件。 一些说明: Tools->Export User Objects导出的是建表语句(包括存储结构)。 Tools->Export Tables里面包含三种导出方式,三种方式都能导出表结构以及数据,如下: ?Oracle Export ?Sql Insert ?pl/sql developer 第一种是导出为.dmp的文件格式,.dmp文件是二进制的,可以跨平台,还能包含权限,效率也很不错,用得最广。 第二种是导出为.sql文件的,可用文本编辑器查看,通用性比较好,但效率不如第一种,适合小数据量导入导出。尤其注意的是表中不能有大字段(blob,clob,long),如果有,

如何导入导出MySQL数据库

如何导入导出MySQL数据库 1. 概述 MySQL数据库的导入,有两种方法: 1) 先导出数据库SQL脚本,再导入; 2) 直接拷贝数据库目录和文件。 在不同操作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况发生。 所以一般推荐用SQL脚本形式导入。下面分别介绍两种方法。 2. 方法一SQL脚本形式 操作步骤如下: 2.1. 导出SQL脚本 在原数据库服务器上,可以用phpMyAdmin工具,或者mysqldump(mysqldump命令位于mysql/bin/目录中)命令行,导出SQL 脚本。 2.1.1 用phpMyAdmin工具 导出选项中,选择导出“结构”和“数据”,不要添加“Drop DATABASE”和“Drop TABLE”选项。 选中“另存为文件”选项,如果数据比较多,可以选中“gzipped”选项。 将导出的SQL文件保存下来。 2.1.2 用mysqldump命令行 命令格式 mysqldump -u用户名-p 数据库名> 数据库名.sql 范例: mysqldump -uroot -p abc > abc.sql (导出数据库abc到abc.sql文件) 提示输入密码时,输入该数据库用户名的密码。 2.2. 创建空的数据库 通过主控界面/控制面板,创建一个数据库。假设数据库名为abc,数据库全权用户为abc_f。 2.3. 将SQL脚本导入执行 同样是两种方法,一种用phpMyAdmin(mysql数据库管理)工具,或者mysql命令行。 2.3.1 用phpMyAdmin工具 从控制面板,选择创建的空数据库,点“管理”,进入管理工具页面。 在"SQL"菜单中,浏览选择刚才导出的SQL文件,点击“执行”以上载并执行。 注意:phpMyAdmin对上载的文件大小有限制,php本身对上载文件大小也有限制,如果原始sql文件 比较大,可以先用gzip对它进行压缩,对于sql文件这样的文本文件,可获得1:5或更高的压缩率。 gzip使用方法: # gzip xxxxx.sql

DB数据库导入导出定稿版

D B数据库导入导出精 编W O R D版 IBM system office room 【A0816H-A0912AAAHH-GX8Q8-GNTHHJ8】

DB2数据导入导出 2012年3月12日 编辑:徐彦 一、环境 操作系统:Redhat Linux AS 5.5 (2.6.18-128.el5PAE #1 SMP i686 i386 GNU/Linux) 数据库版本:DB2 WorkGroup版 V9.7.0 (数据库版本可通过连接数据库来查看,db2 connect to dbname)二、声明 实例用户,默认为db2inst1 Das用户,默认为dasusr1 数据库安装目录($INSTHOME),默认为/opt/ibm/db2/V9.7 实例安装目录($HOME),默认为/home/db2inst1/ 实例名:db2inst1 数据库名:

三、导出具体步骤 3.1导出对象结构 建议单独创建一个数据导出目录,利于导出文件整理的清晰。 $ su – db2inst1 # 切换至db2inst1用户 $ cd / #为导出目录,例如/home/db2inst1/dbdmp(db2inst1要有相应的读写权限) $ db2 connect to # 连接至数据库 $ db2look –d -e –a –l –o .sql # 导出数据库对象创建脚本 例子: 数据库名为meibof

3.2导出数据库数据 (建议在目录下另建db2move的目录用来存放导出数据,因为db2move命令会产生若干文件) db2move export (如果导出是发现有warning,在上面的命名后面加上 -aw参数) 以数据库名为meibof为例: 四、导入具体步骤 4.1建立新数据库 $ su – db2inst1 # 切换至db2inst1用户 db2 create db (建议使用db2cc工具来进行创建数据库) 创建名为meibof的数据库: 4.2执行.sql脚本创建数据库 切换到放置.sql的目录 db2 –tvf .sql

金算盘软件数据导入和导出操作方法

金算盘软件维护集锦 此为201003版本,本期讲一下“导入导出”的一些注意事项,以“往来期初”导入导出为例。 导入导出这个功能是十分有用的,特别是在实施时,对于数据量较大一些基础信息,如果采用手工录入,将会费时费力,影响效率。利用我们软件的“导入导出”功能,将会大大提高工作效率。但如果有些细节不注意,会导入不成功。现说明如下。 导入任何信息之前,最好先在我们软件里做几笔数据,再导出来,其目的就是要利用导出文件的格式对要导入的信息进行编辑、整理,再将编辑、整理的信息导入到软件里。我们软件的导出文件有两个,后缀名分别是INI、Dat,以往来期初为例,其导出的文件是Format.INI、RPInit.Dat。 编辑、整理信息,实际上就是对Dat文件里的内容进行编辑。很多服务人员都习惯以“记事本、写字板”方式打开,实际上最好的方式是在Excel处理为好。无论那一种方式,只要格式正确都可以成功导入。 1、以记事本方式进行处理,编辑界面如下。 要注意,此方式下每两行记录为一条完整的“导入导出”信息。格式给人感觉有点乱,一不小心就容易出错。除非取消“自动换行”选项,才会成为一行记录就是一条导入信息。 更为重要的是,编辑完成保存时,一定要注意所保存文件的“编码”不要搞错,一但搞错将无法导入。如下图:

编码有“ANSI、Unicode、Unicode big endian、UTF-8”这四种,只有保存为“ANSI”编码才能完全导入成功。对于Unicode、Unicode big endian这两种编码,是根本导不成功的。对于UTF-8这种编码,导入信息不完整,且提示信息让人看不懂,如下图所示: 由上图可看出,提示有1条导入成功、4条导入失败,而实际上,我所做的“应收应付”导入信息总共只有4条。如果此时点“是”,系统会导入其中一条,其它三就导不成功。 因此,以“记事本”方式编辑导入信息时,关键一点就是保存时的“编码”不要搞错。要记住,只能是ANSI这种编码。 2、以写字板方式进行处理,编辑界面如下。 这种方式比“记事本”方式要好得多,至少格式规范、不易出错,且一行记录就是一条导入信息,不存在“换行”操作。 但此方式编辑内容后,保存时要注意“保存类型”(这里不存在“编码”之说),如下图:

outlook-邮件导入导出图解备份方法Word版

如何导出 .pst 文件数据 如果仅希望备份某些 Outlook 数据,则可以仅为要保存的数据创建一个新的备份 .pst 文件。此操 作又称为导出 .pst 文件数据。例如,如果仅某些文件夹中存在重要信息,而在多个较大的文件夹中保存着其他不重要的项目,则可能希望使用此部分。可以仅导出重要文件夹或通讯簿而忽略“已发送邮件”之类的文件夹。 按照下面的步骤执行操作,导出特定文件夹: 1. 打开 Outlook。 2. 在“文件”菜单上,单击“导入和导出”。如果该菜单项不可用,则将鼠标指针悬停在 菜单底部的箭头上,然后单击“导入和导出”。 3. 单击“导出到文件”,然后单击“下一步”。 4. 单击“个人文件夹文件(.pst)”,然后单击“下一步”。 5. 单击要将 .pst 文件导出到的文件夹,然后单击“下一步”。 6. 单击“浏览”,然后选择要将新 .pst 文件保存到的位置。 7. 在“文件名”框中,键入要用于新 .pst 文件的名称,然后单击“确定”。 8. 单击“完成”。 注意,文件夹设计属性包括权限、筛选器、说明、表单和视图。如果在 .pst 文件之间导出项目,则不会维护文件夹设计属性。 回到顶端 如何将 .pst 文件数据导入 Outlook 如果初始 .pst 文件损坏或丢失,则可以使用 .pst 文件的备份副本还原 Outlook 数据。在 .pst 文件中保存的所有内容都将返回到 Outlook 中。 按照下面的步骤执行操作,将数据还原或导入到 Outlook 中: 1. 如果希望导入的 .pst 文件存储在可移动设备(如软盘、便携式硬盘驱动器、CD-ROM、 盒式磁带或者任何其他存储媒体)上,则插入或连接该存储设备,然后将 .pst 文件复 制到计算机的硬盘驱动器上。 复制 .pst 文件时,请确保未选择“只读”属性。如果选择此属性,则可能收到以下错 误消息: The specified device, file, or path could not be accessed.It may have been deleted, it may be in use, you may be experiencing network problems, or you may not have sufficient permission to access

数据库数据导入导出

数据库 系统分别拥有一份独立的Oracle数据库逻辑备份文件(后缀为dmp的操作系统文件),每个子系统的导入数据库结构和基础数据的操作是单独执行的。 第一步,以超级管理用户进入Oracle创建用户和授权 第二步:创建表空间(create tablespace law datafile 'D:/oradate/law.dbf' size 300m autoextend on next 50m;) 第三步: --删除用户(第一次可以不用执行,以后想要重新导入数据库才执行这个语句)

drop user law_test cascade; --创建用户和授权 create user law_test identified by law_test default tablespace law; --授权 grant connect,resource,select any dictionary , unlimited tablespace,create any view, create materialized view to law_test; 导入数据库 1、第一步:用Oracle数据库备份恢复命令,导入数据库结构和基础 数据,格式如下: imp {数据库用户名}/{数据库用户密码}file=”{带完整路径的Oracle数据库逻辑备份文件}” imp law_test/law_test file=d:\db\law_test.dmp full=y 2,第二步,看到的导入的页面

最后的提示说导入成功的提示; 导出数据库 exp {数据库用户名}/{数据库用户密码}file=”{带完整路径的Oracle数据库逻辑备份文件}” exp law_test/law_test file=”d:\law_test.dmp”;

DB数据库的导入和导出详解

本文件为您介绍DB2数据库中表结构的导入和导出的两种常用方法,供您参考选择,希望能够对您有所帮助。 方法一 在控制中心的对象视图窗口中,选择所要导出表结构的数据表,按住Ctrl或Shift可多选,单击鼠标右键,选择->生成DDL即可。 方法二 ◆第一步:打开DB2的命令行工具,在DB2安装目录的BIN文件夹下新建一个文件夹data,并且进入该目录。 创建该目录: mkdir data 进入该目录: cd data ◆第二步:导出表结构,命令行如下: db2look -d dbname -e -a -x -i username -w password -o ddlfile.sql 执行成功之后,你会在刚才新建的文件夹下找到该sql文件。 ◆第三步:导出数据,命令行如下: db2move databasename export -u username -p password 至此,导出数据结束。 2导出表中数据 export to [path(例:D:"TABLE1.ixf)] of ixf select [字段(例: * or col1,col2,col3)] from TABLE1; export to [path(例:D:"TABLE1.del)] of del select [字段(例: * or col1,col2,col3)] from TABLE1; 导入表的数据 import from [path(例:D:"TABLE1.ixf)] of ixf insert into TABLE1; load from [path(例:D:"TABLE1.ixf)] of ixf insert into TABLE1;

db数据库导入导出

DB2数据导入导出 2012年3月12日 编辑:徐彦 一、环境 操作系统:Redhat Linux AS 5.5 (-128.el5PAE #1 SMP i686 i386 GNU/Linux) 数据库版本:DB2 WorkGroup版V9.7.0 (数据库版本可通过连接数据库来查看,db2 connect to dbname) 二、声明 ●实例用户,默认为db2inst1 ●Das用户,默认为dasusr1 ●数据库安装目录($INSTHOME),默认为/opt/ibm/db2/V9.7 ●实例安装目录($HOME),默认为/home/db2inst1/ ●实例名:db2inst1 ●数据库名: 三、导出具体步骤 3.1导出对象结构 建议单独创建一个数据导出目录,利于导出文件整理的清晰。 $ su – db2inst1 # 切换至db2inst1用户 $ cd / #为导出目录,例如/home/db2inst1/dbdmp(db2inst1要有相应的读写权限) $ db2 connect to # 连接至数据库 $ db2look –d -e –a –l –o .sql # 导出数据库对象创建脚本 例子: 数据库名为meibof 3.2导出数据库数据 (建议在目录下另建db2move的目录用来存放导出数据,因为db2move命令会产生若

干文件) db2move export (如果导出是发现有warning,在上面的命名后面加上-aw参数) 以数据库名为meibof为例: 四、导入具体步骤 4.1建立新数据库 $ su – db2inst1 # 切换至db2inst1用户 db2 create db (建议使用db2cc工具来进行创建数据库) 创建名为meibof的数据库: 4.2执行.sql脚本创建数据库 切换到放置.sql的目录 db2 –tvf .sql (单次导入有可能丢失数据结构,建议连续执行3次,导入完成后,和开发人员确认数据库对象的数量,尤其是存储过程。) 4.3导入数据 切换到放置db2move导出数据的目录 db2move load 4.4一致性检查 原理:如果发现有表存在检查挂起状态(由于检查约束的原因),则输入命令如下 db2 set integrity for schema.tablename immediate checked将其转换成正常状态。 首先利用sql 语句得到要检查的表的执行语句 主要命令: db2 "select 'db2 set integrity for .'||TABNAME||' immediate checked' from sy scat.tables where TABSCHEMA='' and STATUS='C'" 以数据库名meibof,SCHEMA名meibof为例: 查出有14张表需要转换成正常状态。 在上一条语句末加上 > filename.sh把要添加的sql语句添加到脚本文件 如下例: 用vi文本编辑器打开脚本文件: 1)在第一行加入连接数据库sql语句; 2)在最后一行加入commit命令,db2 commit 执行完后再次检查发现没有需要更正的: 说明:如果还有需要更正的表,则反复执行上述操作。

access数据库导入和导出

一、excel数据导入到access数据库 (1)直接导入法 1.启动Access,新建一数据库文件。 2.在“表”选项中,执行“文件→获取外部数据→导入”命令,打开“导入”对话框。 3.按“文件类型”右侧的下拉按钮,选中“Microsoft Excel(.xls)”选项,再定位到需要转换的工作簿文件所 在的文件夹,选中相应的工作簿,按下“导入”按钮,进入“导入数据表向导”对话框(图1)。 4.选中需要导入的工作表(如“工程数据”),多次按“下一步”按钮作进一步的设置后,按“完成”按钮。 注意:如果没有特别要求,在上一步的操作中直接按“完成”按钮就行了。 5.此时系统会弹出一个导入完成的对话框,按“确定”按钮。 至此,数据就从Excel中导入到Access中。 (2)建立链接法 1.启动Access,新建一数据库文件。 2.在“表”选项中,执行“文件→获取外部数据→链接表”命令,打开“链接”对话框。 二、Access中数据导入excel 在Excel中使用Access数据 你可能想在Excel工作簿中使用Access数据,以便利用数据分析和绘制图表功能、数据排列和布局的灵活性或其他一些Access中不可用的功能。 将Access数据复制到Excel中 你能从Access的数据表视图复制数据,然后将数据粘贴到Excel工作表中。 1. 启动Access,然后打开包含要复制的记录的表、查询或窗体。 2. 在“起始页”选项卡上单击“视图”,然后单击“数据表视图”。 3. 选择要复制的记录。 如果要选择特定列,请在相邻的列标题之间拖动。 4. 在“开始”选项卡上的“剪贴板”组中,单击“复制”。 5. 启动Excel,然后打开要在其中粘贴数据的工作表。 6. 单击要显示第一个字段名称的工作表区域的左上角。 若要确保复制的记录不替换现有记录,请确保工作表中你单击的单元格的下方和右方不存在数据。 7. 在“开始”选项卡上的“剪贴板”组中,单击“粘贴”。

数据更新和数据的导入导出

数据更新和数据的导入导出

实验题目实验三数据更新和数据的导入导出 一.实验目的: (1)熟练掌握使用Transact-SQL和Enterprise Manager在数据库中输入数 据; (2)熟练掌握使用Transact-SQL和Enterprise Manager在数据库中修改数 据; (3)熟练掌握使用Transact-SQL和Enterprise Manager在数据库中删除数 据; (4)掌握数据的导入操作。 二.运行环境: 硬件环境:PC机

软件环境:Windows 7家庭版系统;Microsoft SQL Server2005软件环境 三.实验内容和结果 ①在学生选课库SC中对各个表输入至少10条记录。

②用T-SQL语句增加表中数据,注意满足数据的约束条件。 (1)插入课程信息:课程号=‘C318’,课

程号=‘科技英语’,学分=‘4’ insert into course values('C318','科技英语','4') (2)插入021106同学选修C318课程的信息,成绩为空 insert into report values('021106','C318',null) ③用T-SQL语句修改表中数据,注意满足数据的约束条件。 (1)将软件实习课程的学分改为3分。 update course set credit='3'where cname='软件实习' (2)将王强同学离散数学客车共的成绩改为92分。 update report set grade='92' where sno=(select sno from student where sname='王强') and Cno=(select Cno from course where cname='离散数学') ④用T-SQL语句修改表中数据,注意满足数据的约束条件。 (1)删除021103同学的选课信息。 delete from report where sno='021103' (2)王强同学转学,删除该同学及其选课信息。 delete from report where sno=(select sno from student where sname='王强') delete from student where sname='王强' ⑤备份学生选课SC

数据库中数据的导入导出以及数据库的备份与还原

桂林电子科技大学 数学与计算科学学院实验报告 一,实验目的 % 1、掌握SQL SERVER数据的导入/导出; 2、掌握SQL SERVER的数据备份和恢复机制; 3、掌握SQL SERVER中数据库备份和恢复的方法。 二,实验原理 1、表中的数据导出和导入: 在企业管理器中选择数据库选择表单击鼠标右键所有任务导出(导入)数据下一步选择数据源下一步在“目的”的下拉列表中选择导出(导入)的数据类型和路径、文件名依次点击下一步完成导出(导入)操作。 2、使用企业管理器备和还原份数据库: 在企业管理器中选择数据库点击鼠标右键所有任务备份(还原)数据库 选择备份(还原)的路径,按提示完成。 ~ 三,使用仪器,材料 计算机、SQL2000软件 四,实验内容与步骤 1、使用企业管理器对表中的数据导入/导出 (1)将数据库student09中的sc表中的数据导出为文本文件 在企业管理器中选择数据库student09选择sc表单击鼠标右键所有任务 导出数据出现DTS导入/导出向导下一步选择数据库下一步在“目的”的下 拉列表中选择“文本文件”,指定文本文件的路径和名词依次点击下一步完成导出操 作。用记事本打开导出文件,检查导出的数据是否正确。 (2)将以上的文本文件的内容导入到数据库student09的表中 在企业管理器中选择数据库student09选择sc表单击鼠标右键所有任务 导入数据出现DTS导入/导出向导下一步选择数据源,选择分隔符下一步在 “目的”的下拉列表中选择要导入的表依次点击下一步完成导出操作。打开表查看

导入的数据是否正确。 2、使用企业管理器创建student09数据库的备份文件 在企业管理器中选择数据库点击鼠标右键所有任务备份数据库选择备份文件的路径,然后依次按照对话框的提示进行操作即可创建数据库的备份文件。 } 3、利用以上创建的数据库备份文件恢复数据库 在企业管理器中选择数据库点击鼠标右键所有任务还原数据库选择还原文件的路径,然后依次按照对话框的提示进行操作即可恢复数据库。 五,实验过程原始记录(数据,图表,计算等) 1、使用企业管理器对表中的数据导出: 选择导出文件的类型和路径: 选择格式和要导出的表:

DB数据库导入导出

D B数据库导入导出 Revised final draft November 26, 2020

D B2数据导入导出 2012年3月12日 编辑:徐彦 一、环境 操作系统:RedhatLinuxAS5.5 (-128.el5PAE#1SMPi686i386GNU/Linux) 数据库版本:DB2WorkGroup版V9.7.0 (数据库版本可通过连接数据库来查看,db2connecttodbname) 二、声明 实例用户,默认为db2inst1 Das用户,默认为dasusr1 数据库安装目录($INSTHOME),默认为/opt/ibm/db2/V9.7 实例安装目录($HOME),默认为/home/db2inst1/ 实例名:db2inst1 数据库名: 三、导出具体步骤 3.1导出对象结构 建议单独创建一个数据导出目录,利于导出文件整理的清晰。 $su–db2inst1 #切换至db2inst1用户 $cd/ #为导出目录,例如/home/db2inst1/dbdmp(db2inst1要有相应的读写权限) $db2connectto #连接至数据库 $db2look–d-e–a–l–o.sql #导出数据库对象创建脚本 例子: 数据库名为meibof 3.2导出数据库数据 (建议在目录下另建db2move的目录用来存放导出数据,因为db2move命令会产生若干文件) db2moveexport

(如果导出是发现有warning,在上面的命名后面加上-aw参数) 以数据库名为meibof为例: 四、导入具体步骤 4.1建立新数据库 $su–db2inst1 #切换至db2inst1用户 db2createdb(建议使用db2cc工具来进行创建数据库) 创建名为meibof的数据库: 4.2执行.sql脚本创建数据库 切换到放置.sql的目录 db2–tvf.sql (单次导入有可能丢失数据结构,建议连续执行3次,导入完成后,和开发人员确认数据库对象的数量,尤其是存储过程。) 4.3导入数据 切换到放置db2move导出数据的目录 db2moveload 4.4一致性检查 原理:如果发现有表存在检查挂起状态(由于检查约束的原因),则输入命令如下 db2setintegrityforschema.tablenameimmediatechecked将其转换成正常状态。 首先利用sql语句得到要检查的表的执行语句 主要命令: db2"select'db2setintegrityfor.'||TABNAME||'immediatechecked'fromsyscat.tableswhereTABSCHEMA=''an dSTATUS='C'" 以数据库名meibof,SCHEMA名meibof为例: 查出有14张表需要转换成正常状态。 在上一条语句末加上>filename.sh把要添加的sql语句添加到脚本文件 如下例: 用vi文本编辑器打开脚本文件: 1)在第一行加入连接数据库sql语句; 2)在最后一行加入commit命令,db2commit 执行完后再次检查发现没有需要更正的: 说明:如果还有需要更正的表,则反复执行上述操作。

相关主题