如何将Excel工作表中的数据导入到Linux上的PGSQL数据库?
答案 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,";
}