`
tipfoo
  • 浏览: 24538 次
  • 性别: Icon_minigender_1
  • 来自: 东莞
最近访客 更多访客>>
社区版块
存档分类
最新评论

[转载]导入文本文件中的数据到PostgreSQL中

阅读更多
作者: 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安装和空间数据的导入

    在本文中,我们将介绍如何安装PostgreSQL和PostGIS,并将空间数据导入到PostGIS数据库中。 一、PostgreSQL的安装 PostgreSQL的安装非常简单,用户可以根据自己的操作系统选择合适的安装包。对于Windows用户,可以...

    【kettle012】kettle访问FTP服务器文件并处理数据至PostgreSQL

    总结起来,这个示例展示了如何利用Kettle完成一个完整的数据处理流程:从FTP服务器下载文件,使用转换进行数据预处理,然后通过PostgreSQL JDBC驱动将处理后的数据加载到PostgreSQL数据库中。这个过程对于需要定期从...

    PostgreSQL_8.4安装及空间数据导入_安装操作手册

    在导入数据时,用户可以设置相关的选项来定义数据导入的细节,例如字段映射、数据类型等。 完成所有设置后,执行数据导入操作,将Shapefile数据导入到PostgreSQL数据库中的指定表。导入完成后,可以查看导入的空间...

    将excal批量数据插入到postgresql数据库(目前实现字符串拼接的方式)

    - 使用Excel打开你的数据文件,确保数据格式正确,无空格、特殊字符等可能引发导入错误的因素。 - 数据应以列标题的形式组织,每一列对应数据库表中的一个字段。 2. **读取Excel数据** - 在Python环境中,使用`...

    文件导入的实现

    - SQL文件:可以使用`sqlite3`(SQLite)或`psycopg2`(PostgreSQL)等库,执行SQL语句导入数据。 - Excel文件:`openpyxl`库可以读取Excel文件,获取工作表内容。 三、源码实现示例 下面是一个使用Python读取...

    从Excel中读取数据导入到数据库中

    本文将详细阐述如何从Excel文件中读取数据并将其导入到数据库中,重点处理合并单元格和超过4000字符的数据列。 首先,我们需要理解Excel是常用的数据存储和处理工具,而数据库如MySQL、SQL Server、Oracle等则用于...

    MySQL数据迁移到postgresql必备手册.pdf

    - **权限设置** 确保你有足够权限在目标数据库上创建新对象和导入数据。 - **完整性检查** 迁移后,需验证数据的完整性,确保所有数据都已成功迁移且没有丢失或错误。 - **性能优化** 对于大规模数据迁移,可能...

    oracl创建表空间、用户、授权及数据导入和PostgreSQL导入数据

    本篇文章将深入探讨如何在Oracle中创建表空间、用户以及授权,并讲解如何进行数据导入,同时也会简要介绍在PostgreSQL中导入数据的过程。 首先,我们来看Oracle数据库中的操作: 1. **创建表空间**:在Oracle中,...

    SqlServer ,postgresql-8.3-603, mysql,oracle以及将数据导入到excel 的相关jar包

    本文将详细介绍如何使用SQL Server、PostgreSQL 8.3-603、MySQL、Oracle这四种主流的关系型数据库管理系统(RDBMS)进行数据操作,并探讨如何将这些数据库中的数据导入Excel进行分析和处理。涉及到的关键点包括...

    postgresql 导入导出

    本篇文章将详细探讨如何在PostgreSQL中进行数据的导入与导出,以帮助你更好地管理和维护你的数据库。 首先,我们需要理解数据导入导出的基本概念。数据导入是指将外部数据源(如CSV、TXT文件或另一个数据库)的数据...

    将postgres数据导入到sqlite

    本文将详细讲解如何将PostgreSQL(简称postgres)数据库中的数据导入到SQLite数据库,这是一个常见的需求,特别是在需要轻量级、本地化存储或者跨平台应用时。我们将探讨整个过程,包括自动创建SQLite表以及全库和...

    postgresql9.2安装,连接到arcmap10.2,创建数据库,通过postgis2.18导入数据

    最后,导入数据到PostGIS数据库。假设你有Shapefile或其他GIS格式的数据,可以使用ArcMap的"数据导入"工具,或通过命令行工具`ogr2ogr`实现。例如,`ogr2ogr -f "PostgreSQL" PG:"host=localhost user=postgres ...

    数据库连接文本文件

    这些系统支持从各种源导入数据,包括文本文件。 连接文本文件的过程通常分为几个步骤: 1. **预处理文本文件**:在导入之前,可能需要对文本文件进行预处理,如检查数据格式、去除无效记录、处理缺失值等。这可以...

    postgresql数据快速倒入redis

    最后,`pg2redis-c++`这个文件可能是实现上述功能的一个源码项目,它可能包含了连接PostgreSQL,执行查询,处理结果,并将数据导入Redis的全部代码。通过阅读和学习这个项目,你可以更深入地理解如何使用C++实现高效...

    PostgreSQL中文手册9.2

    PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (数据表 数据表 ) 4 一、表的定义: 一、表的定义: 一、表的定义: . 4 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (模式 Schema) ...

    文件上传及数据导入数据库

    这里我们将深入探讨如何实现Excel文件的上传以及如何将其中的数据有效导入到数据库中。 首先,我们需要理解文件上传的基本过程。在Web应用程序中,用户通常通过表单提交包含文件的请求。在服务器端,开发者需要处理...

    JDBC 连接到 PostgreSQL 数据库获取数据简单例子

    在提供的`JDBCTest`文件中,可能包含了上述示例的完整代码,你可以根据实际情况调整参数以连接到你的PostgreSQL数据库,并从指定的表中获取数据。通过学习和理解这个例子,你可以轻松地将JDBC技术应用到自己的Java...

    一套C#与PostgreSQL数据库完美结合的实例

    本套程序是在VS2005下C#开发,利用PostgreSQL作为数据库。 本程序的重点是如何利用C#对PostgreSQL数据库...将App_Data下的数据库文件导入到PostgreSQL 8.3版里面,库名为:HYGL 然后修改web.config中的配置即可使用

    Datax实现增量同步数据到Postgres

    标题 "Datax实现增量同步数据到Postgres" 涉及到的是使用开源数据同步工具 Datax 进行数据迁移的场景,特别是针对从某个源数据库到PostgreSQL数据库的增量同步。Datax 是阿里巴巴开发的一款高效、稳定且强大的数据...

Global site tag (gtag.js) - Google Analytics