Ich benutze Perl, um durch eine große Anzahl von Rich Text "Dateien" (gespeichert als Ntext - ein Datentyp, der ziemlich a ist Mystery für mich), die in einer SQL Server-Datenbank leben, die ich ziemlich neu bin, nachdem ich vorher nur mit Oracle gearbeitet habe. Allerdings bekomme ich nur die ersten ~ 40 Zeichen aus jeder Datei zurück. Jede Datei beginnt etwas wie folgt aus:Versuchen, großes Textfeld aus Datenbank mit Perl DBI auszuwählen, und es wählt nur das erste Bit
{\rtf1\sste17000\ansi\deflang1033\ftnbj\uc1\deff0 {\fonttbl{\f0 \fswiss Arial;} etc.
Aber wenn ich aus Perl bin Auswahl, schneiden sie wie folgt aus:
{\rtf1\sste17000\ansi\deflang1033\ftnbj
Hier ist der Code habe ich jetzt (select-Anweisung offensichtlich vereinfacht der Kürze halber):
my $dbh = DBI->connect("dbi:ODBC:Driver={SQL Server};Server=$server;UID=$user;PWD=$password")
or die "Can't connect to server: $DBI::errstr";
my $sth = $dbh->prepare("select note_txt from database")
or die "Couldn't prepare statement: " . $dbh->errstr;
my @data;
$sth->execute()
or die "Couldn't execute statement: " . $sth->errstr;
$sth->{'LongTruncOk'} = 1;
$sth->{'LongReadLen'} = 2000;
while (@data = $sth->fetchrow_array()) {
my $note = $data[0];
parse_note($note);
}
Warum es mir nur geben die ersten ~ 40 Zeichen, und wie kann ich den gesamten Text raus?
Danke!
Nach dem [DBI docs] (https://metacpan.org/pod/DBI#LongReadLen), „Ändern Sie den Wert von' LongReadLen' für ein Statement-Handle, nachdem es 'worden typischerweise prepare''d haben kein Effekt, daher ist es üblich, 'LongReadLen' auf dem' $ dbh' zu setzen, bevor 'prepare' aufgerufen wird." Behebt das dein Problem? – ThisSuitIsBlackNot
Das scheint den Trick geschafft zu haben! Ich danke dir sehr! – Cassie