import — import records into database
| Attribute | Pos. | Req. | Default | Description |
|---|---|---|---|---|
| [ table | base | database ] | Yes | Yes | . | |
| type | Yes | |||
| continue | ||||
| separator | ||||
| file | . | |||
| interpolate | 0 | interpolate input? | ||
| reparse | 1 | interpolate output? |
The [import] tag is used to import records into a
database.
The table (database) must already be registered
with Interchange using the Database directive; tables cannot be created
on the fly.
Interchange 5.9.0:
Source: code/SystemTag/import.coretag
Lines: 18
# Copyright 2002-2007 Interchange Development Group and others # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. See the LICENSE file for details. # # $Id: import.coretag,v 1.5 2007-03-30 23:40:49 pajamian Exp $ UserTag import Order table type UserTag import addAttr UserTag import attrAlias base table UserTag import attrAlias database table UserTag import hasEndTag UserTag import Interpolate UserTag import PosNumber 2 UserTag import Version $Revision: 1.5 $ UserTag import MapRoutine Vend::Data::import_text
Source: lib/Vend/Data.pm
Lines: 325
sub import_text {
my ($table, $type, $options, $text) = @_;
#::logDebug("Called import_text: table=$table type=$type opt=" . Data::Dumper::Dumper \
($options) . " text=$text");
my ($delimiter, $record_delim) = find_delimiter($type);
my $db = $Vend::Database{$table}
or die ("Non-existent table '$table'.\n");
$db = $db->ref();
my @columns;
@columns = ($db->columns());
if($options->{'continue'}) {
$options->{CONTINUE} = uc $options->{'continue'};
$options->{NOTES_SEPARATOR} = uc $options->{separator}
if defined $options->{separator};
}
my $sub = sub { return $db };
my $now = time();
my $fn = $Vend::Cfg->{ScratchDir} . "/import.$$.$now";
$text =~ s/^\s+//;
$text =~ s/\s+$//;
if($delimiter eq 'CSV') {
my $add = '"';
$add .= join '","', @columns;
$add .= '"';
$text = "$add\n$text";
}
else {
$options->{field_names} = \@columns;
$options->{delimiter} = $options->{DELIMITER} = $delimiter;
}
if($options->{file}) {
$fn = $options->{file};
Vend::File::allowed_file($fn)
or die ::errmsg("No absolute file names like '%s' allowed.\n", $fn);
}
else {
# data is already in memory, do not create a temporary file
$options->{scalar_ref} = 1;
$fn = \$text;
}
my $save = $/;
local($/) = $record_delim if defined $record_delim;
$options->{Object} = $db;
## This is where the actual import happens
Vend::Table::Common::import_ascii_delimited($fn, $options);
$/ = $save;
unlink $fn unless $options->{'file'} or $options->{scalar_ref};
return 1;
}