📄 sqlite.dbtest
字号:
# Hej, Emacs, give us -*- perl -*- mode here!## $Id: SQLite.dbtest,v 1.1 2002/02/19 17:19:57 matt Exp $## database specific definitions for a 'CSV' database# This function generates a mapping of ANSI type names to# database specific type names; it is called by TableDefinition().#sub AnsiTypeToDb ($;$) { my ($type, $size) = @_; my ($ret); if ((lc $type) eq 'char' || (lc $type) eq 'varchar') { $size ||= 1; return (uc $type) . " ($size)"; } elsif ((lc $type) eq 'blob' || (lc $type) eq 'real' || (lc $type) eq 'integer') { return uc $type; } elsif ((lc $type) eq 'int') { return 'INTEGER'; } else { warn "Unknown type $type\n"; $ret = $type; } $ret;}## This function generates a table definition based on an# input list. The input list consists of references, each# reference referring to a single column. The column# reference consists of column name, type, size and a bitmask of# certain flags, namely## $COL_NULLABLE - true, if this column may contain NULL's# $COL_KEY - true, if this column is part of the table's# primary key## Hopefully there's no big need for you to modify this function,# if your database conforms to ANSI specifications.#sub TableDefinition ($@) { my($tablename, @cols) = @_; my($def); # # Should be acceptable for most ANSI conformant databases; # # msql 1 uses a non-ANSI definition of the primary key: A # column definition has the attribute "PRIMARY KEY". On # the other hand, msql 2 uses the ANSI fashion ... # my($col, @keys, @colDefs, $keyDef); # # Count number of keys # @keys = (); foreach $col (@cols) { if ($$col[2] & $::COL_KEY) { push(@keys, $$col[0]); } } foreach $col (@cols) { my $colDef = $$col[0] . " " . AnsiTypeToDb($$col[1], $$col[2]); if (!($$col[3] & $::COL_NULLABLE)) { $colDef .= " NOT NULL"; } push(@colDefs, $colDef); } if (@keys) { $keyDef = ", PRIMARY KEY (" . join(", ", @keys) . ")"; } else { $keyDef = ""; } $def = sprintf("CREATE TABLE %s (%s%s)", $tablename, join(", ", @colDefs), $keyDef);}## This function generates a list of tables associated to a# given DSN.#sub ListTables(@) { my($dbh) = shift; my(@tables); @tables = $dbh->func('list_tables'); if ($dbh->errstr) { die "Cannot create table list: " . $dbh->errstr; } @tables;}## This function is called by DBD::pNET; given a hostname and a# dsn without hostname, return a dsn for connecting to dsn at# host.sub HostDsn ($$) { my($hostname, $dsn) = @_; "$dsn:$hostname";}## Return a string for checking, whether a given column is NULL.#sub IsNull($) { my($var) = @_; "$var IS NULL";}## Return TRUE, if database supports transactions#sub HaveTransactions () { 1;}if (! -d "output") { mkdir "output", 0755;}1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -