Excel和pgSQL

时间:2010-05-06 19:52:29

标签: linux excel postgresql

如何将Excel工作表中的数据导入到Linux上的PGSQL数据库?

5 个答案:

答案 0 :(得分:1)

简单的方法是使用SAVE AS功能将数据从Excel导出到CSV。然后使用psql的本机\COPY功能。您可以使用psql中的\? COPY命令或访问the docs on COPY来找到有关它的更多信息。

答案 1 :(得分:0)

另一个选项(一些解决方法,但应该有效)是将Excel文件导入Access,然后通过ODBC连接将生成的表升级到PostgreSQL。

答案 2 :(得分:0)

如果你经常这样做,那么你应该研究Aqua Data Studio - 我发现它非常有用。

答案 3 :(得分:0)

我一直这样做并使用Navicat [1](约79美元)。您需要一个Windows框来运行客户端,因为Linux客户端无法从Excel导入。

您几乎可以导入任何数据格式(Access,Excel,DBF,Lotus ...),定义可以保存的源和目标之间的映射。

BTW我不适合Navicat!我刚尝试了几个DBA客户端,这是迄今为止最好的数据导入。

[1] http://www.navicat.com/en/products/navicat_pgsql/pgsql_overview.html

答案 4 :(得分:0)

尝试此代码:

<?php

$db = pg_connect("host=localhost port=5432 dbname=your_db user=postgres password=your_paswrd");
//call excel reader
require "excel_reader.php";
//press button
if(isset($_POST['submit'])){
    $target = basename($_FILES['fopenl']['name']) ;
    move_uploaded_file($_FILES['fopenl']['tmp_name'], $target);   
    $data = new Spreadsheet_Excel_Reader($_FILES['fopenl']['name'],false);   
//count row of excel xls
    $baris = $data->rowcount($sheet_index=0);    
//empty database before
    $drop = isset( $_POST["drop"] ) ? $_POST["drop"] : 0 ;
    if($drop == 1){
//empty employee table
             $truncate ="TRUNCATE TABLE employee";
             pgsql_query($truncate);
    };    
//import data from xls
    for ($i=1; $i<=$baris; $i++)
    {
//read from xls
      $emp_id = $data->val($i, 1);
      $date = $data->val($i, 2);
      $id_mac = $data->val ($i, 3);
      $val_a = $data->val($i, 4);
      $val_b = $data->val($i, 5);
      $stat = $data->val($i, 6);
      $note = $data->val ($i, 7);
//setelah data dibaca, masukkan ke tabel dari_finger
      $query_insert = "INSERT into employee (emp_id,date,id_mac,val_a,val_b,stat,note)values('$emp_id','$date','$id_mac','$val_a','$val_b','$stat','$note')";
//eksekusi query insert
      $insert = pg_query($query_insert);
    }    
  if(!$insert){
//jika import gagal
          die(pgsql_error());
      }else{
//jika impor berhasil
          echo " Data imported,";
    }