我有一个文件夹里面都是文本文件,我想将这个文件中的文件全部导入postgreSQL中,
我先创建了个表CREATE TABLE test(id int,filename text, file text);
我希望可以通过编程实现文件夹的遍历,然后各个文件的名字放入filename字段中,对应的文件的名字放入file字段中。
请问大家用SQL可以直接实现吗?还是用libpq可以实现呢?或者有什么别的方式实现吗?请大家帮帮忙,这个问题纠结了好久了,我还没纠结出来,麻烦大家知道的给说下吧,多谢了

解决方案 »

  1.   

    请问大家用SQL可以直接实现吗?
    不能,用语言遍历,存入表中,再导入
      

  2.   

    你可以先直接dir > xxx.txt
    然后用命令导入
    copy test from '/path/to/xxx.txt' DELIMITERS ',' CSV; 
      

  3.   

    先多谢两位的回答,可能是我没说清楚,首先我的文本文件是没有任何格式的,就是很普通的文本,没有像‘|'或者空格之类的分隔符,也不可能一个一个地去添加
    我的目的就是想建一个像excel表之类的表格,像下面这样:
    文件名字 文件内容
    a.txt 文件a的内容
    b.txt 文件b的内容
    c.txt 文件c 的内容
    是一个N行2列的表(每个文件占一行,有多少个文件需要导入就有多少行);就先拿导入一个文件来讲吧,我先是用的psql做的,
    CREATE TABLE test(filename  character(30), content text);//创建一个表将文件a.txt导入我有两种思路:
    方法一:先用copy将a文件的内容导入到content字段(注,全部内容都是在一个单元格中,并不是占了很多单元格),在用insert将a文件的文件名插入进去,可最终结果是a文件的内容在表格的第一行第二列,而文件名却在第二行第一列。
    方法二:直接用insert来插入,如INSERT INTO test VALUES ('a.txt', '/data/a.txt');但INSERT不支持从路径加载文件啊,如果我要做大批量文件的导入的话,我只能给出路径,通过路径来导入文件,这条路又行不通。怎么办?
    a4,你能再稍微详细说一下吗,没太看懂你的意思啊,你的意思是用sql语言不可以,那该用什么呢?postgresql是有个c的编程接口libpq,但我看到说libpq 是一套允许客户程序向 PostgreSQL 服务器服务进程发送查询并且获得查询返回的库函数,那用它也可以用来对数据库进行除查询之外的操作吗?我问的问题可能有点白,因为对数据库这块儿是在是没什么底子,刚接触也没多久,请大家知道的不吝赐教哈,多谢各位了
      

  4.   

    将路径与TXT 文件名存入表中,用下面的语句导入,自行修改,可用SP来写1个循环
    copy   city   FROM   'd:/city.txt'   USING   DELIMITERS   ','
      

  5.   

    方法一有试过吗?COPY from能否完全将一个文本文件(里面有很多行)导入数据库中的某一行内吗?
      

  6.   

    aaaa,你的意思是先将文件名导入表中,再用copy将文件内容导入吗?如果是的话,就有个问题,将文件名导入时导入的是在第1行,用copy将内容导入时却是存到第二行了,不是在同一行啊,我是想让文件的名字和内容存在同一行上,有解决办法吗?
      

  7.   

    先将文件的内容读出来了
    再insert进去文件的内容可能要考虑特殊字符也可以读取成二进制格式了查询可以采用全文索引
      

  8.   

    是这个 意思,将表名存放在1个表中,用SP循环,动态生成SQL语句(生成COPY FROM),再执行