作者: falcon 来源:http://oss.lzu.edu.cn/blog/article.php?tid_1265.html
说明:下面的操作在gentoo上完成,关于postgreSQL的基本使用请参考资料[1]
上次在《
用AWK转换树形数据成关系表》中提到可以通过AWK把以“树形”方式存放的数据转换成关系表,这里将介绍如何把这个表从文本文件中直接导入到PostgreSQL数据库管理系统中。
如果用过mysql,你会发现它提供了一个非常有用的load命令来导入文本文件中存放的数据,强大的PostgreSQL也提供了类似的工具,那就是COPY命令,基本的用法是:
Quote: |
COPY tablename FROM 'filename' WITH DELIMITER ' delimiter'
|
这里涉及到导入哪个表,从哪里导入,以及原始数据的分割符。这里涉及的核心东西还是原始数据,因为我们需要根据原始数据设计表,指定分割符,然后导入到PostgreSQL中。
首先看看上次的数据(
用AWK转换树形数据成关系表),文件名叫db,内容是一个系统函数的部分调用层次.
Quote: |
1 1 sys_clone
2 2 do_fork
3 3 alloc_pidmap
4 3 copy_process
5 4 dup_task_struct
6 5 prepare_to_copy
7 5 kmem_cache_alloc
8 5 kmem_cache_alloc
9 5 memcpy
10 4 ktime_get_ts
11 5 getnstimeofday
12 6 do_gettimeofday
13 7 get_offset_tsc
14 5 set_normalized_timespec
15 4 audit_alloc
16 4 copy_semundo
17 4 copy_files
18 5 dup_fd
19 6 alloc_files
|
这个文本文件中有三列数据,分别叫调用顺序,调用层次,函数名,从文本数据中我们看出分割符并不固定,是一个或者多个空格。
下面通过三步把上面的文本数据导入到PostgreSQL中。
首先,设计数据库,叫syscall, 表为tree,表中字段包括调用顺序id,调用层次depth,函数名func。具体创建库和表(在gentoo发行版上):
Quote: |
$ su postgres
$ createdb syscall
$ psql -d syscall
syscall=# CREATE TABLE "tree" (id bigint, depth bigint, func char(100));
syscall=# \quit
|
现在我们处理一下上面的文本,把分割符设置成单个空格。
Quote: |
$ sed -i -e 's/[[:space:]][[:space:]]*/ /g' db
|
把处理过后的文件存放到某个指定目录下(我把它放在/home/falcon/database/db),然后导入数据库中。
Quote: |
$ psql -d syscall
syscall=# COPY tree FROM '/home/falcon/database/db' with DELIMITER ' ';
或者
syscall=# \COPY tree FROM '/home/falcon/database/db' with DELIMITER ' '
看看效果:
syscall=# select * from tree limit 10;
|
注:貌似用COPY命令的时候得指定文本文件的绝对路径,而\copy命令可以用相对路径。集合上篇文章(
用AWK转换树形数据成关系表),实际上我们就可以把内核函数跟踪工具KFT的结果存放到数据库中了,相关的工作包括如何处理KFT产生的调用树,如何自动跟踪不同的系统调用等。如果有兴趣届时可以访问我的个人首页。
[1]
http://gentoo-wiki.com/HOWTO_Configure_Postgresql
[2] PostgreSQL Usage and Tutorials
http://www.eskimo.com/~ericj/personal/postgresql/
[3] COPY command of psql
http://www.postgresql.org/docs/8.2/static/sql-copy.html
分享到:
相关推荐
在本文中,我们将介绍如何安装PostgreSQL和PostGIS,并将空间数据导入到PostGIS数据库中。 一、PostgreSQL的安装 PostgreSQL的安装非常简单,用户可以根据自己的操作系统选择合适的安装包。对于Windows用户,可以...
总结起来,这个示例展示了如何利用Kettle完成一个完整的数据处理流程:从FTP服务器下载文件,使用转换进行数据预处理,然后通过PostgreSQL JDBC驱动将处理后的数据加载到PostgreSQL数据库中。这个过程对于需要定期从...
在导入数据时,用户可以设置相关的选项来定义数据导入的细节,例如字段映射、数据类型等。 完成所有设置后,执行数据导入操作,将Shapefile数据导入到PostgreSQL数据库中的指定表。导入完成后,可以查看导入的空间...
- 使用Excel打开你的数据文件,确保数据格式正确,无空格、特殊字符等可能引发导入错误的因素。 - 数据应以列标题的形式组织,每一列对应数据库表中的一个字段。 2. **读取Excel数据** - 在Python环境中,使用`...
- SQL文件:可以使用`sqlite3`(SQLite)或`psycopg2`(PostgreSQL)等库,执行SQL语句导入数据。 - Excel文件:`openpyxl`库可以读取Excel文件,获取工作表内容。 三、源码实现示例 下面是一个使用Python读取...
本文将详细阐述如何从Excel文件中读取数据并将其导入到数据库中,重点处理合并单元格和超过4000字符的数据列。 首先,我们需要理解Excel是常用的数据存储和处理工具,而数据库如MySQL、SQL Server、Oracle等则用于...
- **权限设置** 确保你有足够权限在目标数据库上创建新对象和导入数据。 - **完整性检查** 迁移后,需验证数据的完整性,确保所有数据都已成功迁移且没有丢失或错误。 - **性能优化** 对于大规模数据迁移,可能...
本篇文章将深入探讨如何在Oracle中创建表空间、用户以及授权,并讲解如何进行数据导入,同时也会简要介绍在PostgreSQL中导入数据的过程。 首先,我们来看Oracle数据库中的操作: 1. **创建表空间**:在Oracle中,...
本文将详细介绍如何使用SQL Server、PostgreSQL 8.3-603、MySQL、Oracle这四种主流的关系型数据库管理系统(RDBMS)进行数据操作,并探讨如何将这些数据库中的数据导入Excel进行分析和处理。涉及到的关键点包括...
本篇文章将详细探讨如何在PostgreSQL中进行数据的导入与导出,以帮助你更好地管理和维护你的数据库。 首先,我们需要理解数据导入导出的基本概念。数据导入是指将外部数据源(如CSV、TXT文件或另一个数据库)的数据...
本文将详细讲解如何将PostgreSQL(简称postgres)数据库中的数据导入到SQLite数据库,这是一个常见的需求,特别是在需要轻量级、本地化存储或者跨平台应用时。我们将探讨整个过程,包括自动创建SQLite表以及全库和...
最后,导入数据到PostGIS数据库。假设你有Shapefile或其他GIS格式的数据,可以使用ArcMap的"数据导入"工具,或通过命令行工具`ogr2ogr`实现。例如,`ogr2ogr -f "PostgreSQL" PG:"host=localhost user=postgres ...
这些系统支持从各种源导入数据,包括文本文件。 连接文本文件的过程通常分为几个步骤: 1. **预处理文本文件**:在导入之前,可能需要对文本文件进行预处理,如检查数据格式、去除无效记录、处理缺失值等。这可以...
最后,`pg2redis-c++`这个文件可能是实现上述功能的一个源码项目,它可能包含了连接PostgreSQL,执行查询,处理结果,并将数据导入Redis的全部代码。通过阅读和学习这个项目,你可以更深入地理解如何使用C++实现高效...
PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (数据表 数据表 ) 4 一、表的定义: 一、表的定义: 一、表的定义: . 4 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (模式 Schema) ...
这里我们将深入探讨如何实现Excel文件的上传以及如何将其中的数据有效导入到数据库中。 首先,我们需要理解文件上传的基本过程。在Web应用程序中,用户通常通过表单提交包含文件的请求。在服务器端,开发者需要处理...
在提供的`JDBCTest`文件中,可能包含了上述示例的完整代码,你可以根据实际情况调整参数以连接到你的PostgreSQL数据库,并从指定的表中获取数据。通过学习和理解这个例子,你可以轻松地将JDBC技术应用到自己的Java...
本套程序是在VS2005下C#开发,利用PostgreSQL作为数据库。 本程序的重点是如何利用C#对PostgreSQL数据库...将App_Data下的数据库文件导入到PostgreSQL 8.3版里面,库名为:HYGL 然后修改web.config中的配置即可使用
标题 "Datax实现增量同步数据到Postgres" 涉及到的是使用开源数据同步工具 Datax 进行数据迁移的场景,特别是针对从某个源数据库到PostgreSQL数据库的增量同步。Datax 是阿里巴巴开发的一款高效、稳定且强大的数据...