Platform  3.1
PHP API documentation
 All Data Structures Namespaces Files Functions Variables Pages
csv2sql.php
Go to the documentation of this file.
1 <?php
2 /*
3  * @author Anakeen
4  * @license http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ Anakeen - licence CC
5  * @package FDL
6 */
7 /**
8  * to big importation
9  *
10  * @author Anakeen 2007
11  * @version $Id: csv2sql.php,v 1.2 2007/12/13 16:54:21 eric Exp $
12  * @license http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ Anakeen - licence CC
13  * @package FDL
14  * @subpackage WSH
15  */
16 /**
17  */
18 
19 include_once ("FDL/import_file.php");
20 
22 
23 if (!$fimport) {
24  print "file needed :usage --file=<csv file>\n";
25  exit(1);
26 }
27 if (seemsODS($fimport)) {
28  $cvsfile = ods2csv($fimport);
29  $fdoc = fopen($cvsfile, "r");
30 } else {
31  $fdoc = fopen($fimport, "r");
32 }
33 if (!$fdoc) exit(1);
34 
35 $dbaccess = getParam('FREEDOM_DB');
36 $idoc = new doc($dbaccess);
37 while (!feof($fdoc)) {
38 
39  $buffer = rtrim(fgets($fdoc, 16384));
40  $data = explode(";", $buffer);
41  $nline++;
42 
43  if ($data[0] == 'ORDER') {
44  if (is_numeric($data[1])) $orfromid = $data[1];
45  else $orfromid = getFamIdFromName($dbaccess, $data[1]);
46  $tcolorder[$orfromid] = getOrder($data);
47  $cdoc = createDoc($dbaccess, $orfromid);
48  $ta = $cdoc->GetTitleAttributes();
49  $titles[$orfromid] = array();
50  foreach ($ta as $k => $v) {
51  $titles[$orfromid][] = $v->id;
52  }
53 
54  foreach ($idoc->fields as $k => $v) {
55  if ($cdoc->$v != "") $tval[$orfromid][$v] = "'" . $cdoc->$v . "'";
56  }
57  $tval[$orfromid]["id"] = "(select nextval ('seq_id_doc'))";
58  $tval[$orfromid]["initid"] = "(select currval ('seq_id_doc'))";
59  $tval[$orfromid]["owner"] = $action->user->id;
60  } else if ($data[0] == 'DOC') {
61  if (is_numeric($data[1])) $fromid = $data[1];
62  else $fromid = getFamIdFromName($dbaccess, $data[1]);
63 
64  if (!isset($tval[$fromid])) {
65  print "-- order not defined for $fromid;\n";
66  continue;
67  }
68 
69  $ini = $tval[$fromid];
70 
71  $idx = 4;
72  foreach ($tcolorder[$fromid] as $k => $v) {
73  $ini[$v] = "'" . pg_escape_string($data[$idx]) . "'";
74  $idx++;
75  }
76  $title = "";
77  foreach ($titles[$orfromid] as $k => $v) {
78  $title.= substr($ini[$v], 1, -1) . " ";
79  }
80  $ini["title"] = "'" . pg_escape_string(trim($title)) . "'";
81 
82  $sval = implode($ini, ",");
83  $skey = implode(array_keys($ini) , ",");
84  $sql = sprintf("INSERT INTO doc%d (%s) values (%s);\n", $fromid, $skey, $sval);
85  print $sql;
86  }
87 }
88 // update family index when finished
89 foreach ($titles as $fromid => $v) {
90  $sql = sprintf("select setval ('seq_doc%d',(select max(id) from doc%d));\n", $fromid, $fromid);
91  print $sql;
92 }
93 ?>
← centre documentaire © anakeen - published under CC License - Dynacase