| The Following User Says Thank You to BabylonV2000 For This Useful Post: | ||
|
|
2010-05-05
, 14:23
|
|
Posts: 16 |
Thanked: 8 times |
Joined on Jan 2010
|
#2
|
| The Following User Says Thank You to BabylonV2000 For This Useful Post: | ||
|
|
2010-05-07
, 12:02
|
|
Posts: 16 |
Thanked: 8 times |
Joined on Jan 2010
|
#3
|
|
|
2010-09-16
, 13:13
|
|
Posts: 15 |
Thanked: 3 times |
Joined on Sep 2010
@ Australia
|
#4
|
Hi,
After some googling i found my answer
1. export sms from n900 with smsexporter (cf http://talk.maemo.org/showthread.php?t=37354)
2. import them in Android (cf http://libe.toile-libre.org/?p=530)
Hope it could help.
Thanks for reading
| The Following User Says Thank You to motom For This Useful Post: | ||
|
|
2011-06-15
, 17:38
|
|
Posts: 1 |
Thanked: 1 time |
Joined on Jun 2010
|
#6
|
| The Following User Says Thank You to Rotsopp For This Useful Post: | ||
|
|
2014-04-04
, 19:28
|
|
Posts: 1 |
Thanked: 6 times |
Joined on Apr 2014
|
#7
|

#!/usr/bin/perl
use strict;
use warnings;
use Time::Piece;
my %sms;
my $numsms = 0;
# Dump the SMS from an N900 backup file:
# 1. Open the backup folder and use an unpacker to open comm_and_cal.zip.
# 2. Navigate to /Root/home/user/.rtcom-eventlogger/ in the archive.
# 3. Open the backup.tgz archive.
# 4. Extract el-v1.db and open it using "SQLite database browser".
# 5. Select "File" -> "Export" -> "Table as CSV file".
# 6. Choose table "Events" and store the file.
# The file now contains the SMS along with some other events. Double
# quotes (") in the SMS text are replaced by "" (double double quotes)
# and new lines are still present. This script takes care of the former
# and replaces them by '' (two apostrophes), but it doesn't handle the
# latter. This makes some quasi-manual preprocessing necessary, which
# can be done using the Geany text editor:
# Replace all ([^"])\n by \1 to get rid of wrapped lines. Repeat this step
# until the pattern is not found anymore.
# If you ignore this step, multi-line messages will be silently discarded.
# When this is done, the script can be run by supplying the converted
# CSV file as standard input and redirecting standard output to another
# CSV file:
# ./n900_smsconv.pl < sms_in.csv > sms_out.csv
# An application like "SMS Tools" can then be used to import the SMS
# into your Android phone (choose the nokia format when asked).
# The database contains some definitions for the various IDs, those
# are shown in the following lists:
# service_id field:
# 1: RTCOM_EL_SERVICE_CALL
# 2: RTCOM_EL_SERVICE_CHAT
# 3: RTCOM_EL_SERVICE_SMS
# event_type_id field:
# 1: RTCOM_EL_EVENTTYPE_CALL
# 2: RTCOM_EL_EVENTTYPE_CALL_MISSED
# 3: RTCOM_EL_EVENTTYPE_CALL_VOICEMAIL
# 4: RTCOM_EL_EVENTTYPE_CHAT_MESSAGE
# 5: RTCOM_EL_EVENTTYPE_CHAT_NOTICE
# 6: RTCOM_EL_EVENTTYPE_CHAT_ACTION
# 7: RTCOM_EL_EVENTTYPE_CHAT_AUTOREPLY
# 8: RTCOM_EL_EVENTTYPE_CHAT_JOIN
# 9: RTCOM_EL_EVENTTYPE_CHAT_LEAVE
# 10: RTCOM_EL_EVENTTYPE_CHAT_TOPIC
# 11: RTCOM_EL_EVENTTYPE_SMS_MESSAGE
# flags field:
# 1: RTCOM_EL_FLAG_CHAT_GROUP
# 2: RTCOM_EL_FLAG_CHAT_ROOM
# 3: RTCOM_EL_FLAG_OPAQUE
# 4: RTCOM_EL_FLAG_OFFLINE
# 5: RTCOM_EL_FLAG_SMS_PENDING
# 6: RTCOM_EL_FLAG_SMS_TEMPORARY_ERROR
# 7: RTCOM_EL_FLAG_SMS_PERMANENT_ERROR
foreach my $csvline (<STDIN>) {
chomp $csvline;
if ($csvline =~ m/
"(\d+)", # 1 id e.g. "3131"
"(3)", # 2 service_id e.g. "3"
"(11)", # 3 event_type_id e.g. "11"
"(\d+)", # 4 storage_time e.g. "1396603341"
"(\d+)", # 5 start_time e.g. "1396603339"
"(\d+)", # 6 end_time e.g. "1396603341" or "0"
"(\d+)", # 7 is_read e.g. "1"
"(\d+)", # 8 outgoing e.g. "0" or "1"
"(\d+)", # 9 flags e.g. "0"
"(\d+)", # 10 bytes_sent e.g. "0"
"(\d+)", # 11 bytes_received e.g. "0"
"([^"]*)", # 12 local_uid e.g. "ring tel ring"
"([^"]*)", # 13 local_name e.g. "<SelfHandle>"
"([^"]*)", # 14 remote_uid e.g. "+4179..."
"([^"]*)", # 15 channel e.g. ""
"(.*?)", # 16 free_text e.g. "abcdef"
"([^"]*)" # 17 group_uid e.g. "6288879"
$/pxo)
{
$sms{$numsms}{'sent'} = int($8);
$sms{$numsms}{'time'} = $5;
$sms{$numsms}{'number'} = $14;
$sms{$numsms}{'msg'} = $16 =~ s/""/''/ro;
++$numsms;
}
}
print STDERR "Parsed $numsms messages.\n";
foreach my $key (sort {$a<=>$b} keys %sms) {
print '"sms",';
my $number = $sms{$key}{'number'};
my $time = localtime($sms{$key}{'time'})->strftime('%Y.%m.%d %H:%M');
my $text = $sms{$key}{'msg'};
if ($sms{$key}{'sent'}) {
print '"SENT",';
print '"",';
print "\"$number\",";
} else {
print '"READ,RECEIVED",';
print "\"$number\",";
print '"",';
}
print '"",';
print "\"$time\",";
print '"",';
print "\"$text\"\n";
}
|
|
2016-11-29
, 11:29
|
|
Posts: 14 |
Thanked: 36 times |
Joined on Dec 2009
@ Adelaide, Australia
|
#8
|
Hi all,
I know that this thread is old, but probably there are still people around here needing to import N900 SMS on Android. I finally had to bury my beloved Nokia after the second Touchscreen started to malfunction as well
|
|
2017-08-02
, 15:56
|
|
Posts: 26 |
Thanked: 17 times |
Joined on Mar 2010
|
#9
|
#!/usr/bin/perl
use strict;
use warnings;
use Time::Piece;
my %sms;
my $numsms = 0;
# Dump the SMS from an N900 backup file:
# 1. Open the backup folder and use an unpacker to open comm_and_cal.zip.
# 2. Navigate to /Root/home/user/.rtcom-eventlogger/ in the archive.
# 3. Open the backup.tgz archive.
# 4. Extract el-v1.db and open it using "SQLite database browser".
# 5. Select "File" -> "Export" -> "Table as CSV file".
# 6. Choose table "Events" and store the file.
# The file now contains the SMS along with some other events. Double
# quotes (") in the SMS text are replaced by "" (double double quotes)
# and new lines are still present. This script takes care of the former
# and replaces them by '' (two apostrophes), but it doesn't handle the
# latter. This makes some quasi-manual preprocessing necessary, which
# can be done using the Geany text editor:
# Replace all ([^"])\n by \1 to get rid of wrapped lines. Repeat this step
# until the pattern is not found anymore.
# If you ignore this step, multi-line messages will be silently discarded.
# When this is done, the script can be run by supplying the converted
# CSV file as standard input and redirecting standard output to another
# CSV file:
# ./n900_smsconv.pl < sms_in.csv > sms_out.csv
# An application like "SMS Tools" can then be used to import the SMS
# into your Android phone (choose the nokia format when asked).
# The database contains some definitions for the various IDs, those
# are shown in the following lists:
# service_id field:
# 1: RTCOM_EL_SERVICE_CALL
# 2: RTCOM_EL_SERVICE_CHAT
# 3: RTCOM_EL_SERVICE_SMS
# event_type_id field:
# 1: RTCOM_EL_EVENTTYPE_CALL
# 2: RTCOM_EL_EVENTTYPE_CALL_MISSED
# 3: RTCOM_EL_EVENTTYPE_CALL_VOICEMAIL
# 4: RTCOM_EL_EVENTTYPE_CHAT_MESSAGE
# 5: RTCOM_EL_EVENTTYPE_CHAT_NOTICE
# 6: RTCOM_EL_EVENTTYPE_CHAT_ACTION
# 7: RTCOM_EL_EVENTTYPE_CHAT_AUTOREPLY
# 8: RTCOM_EL_EVENTTYPE_CHAT_JOIN
# 9: RTCOM_EL_EVENTTYPE_CHAT_LEAVE
# 10: RTCOM_EL_EVENTTYPE_CHAT_TOPIC
# 11: RTCOM_EL_EVENTTYPE_SMS_MESSAGE
# flags field:
# 1: RTCOM_EL_FLAG_CHAT_GROUP
# 2: RTCOM_EL_FLAG_CHAT_ROOM
# 3: RTCOM_EL_FLAG_OPAQUE
# 4: RTCOM_EL_FLAG_OFFLINE
# 5: RTCOM_EL_FLAG_SMS_PENDING
# 6: RTCOM_EL_FLAG_SMS_TEMPORARY_ERROR
# 7: RTCOM_EL_FLAG_SMS_PERMANENT_ERROR
foreach my $csvline (<STDIN>) {
chomp $csvline;
if ($csvline =~ m/
(\d+), # 1 id e.g. "3131"
(3), # 2 service_id e.g. "3"
(7), # 3 event_type_id e.g. "11"
(\d+), # 4 storage_time e.g. "1396603341"
(\d+), # 5 start_time e.g. "1396603339"
(\d+), # 6 end_time e.g. "1396603341" or "0"
(\d+), # 7 is_read e.g. "1"
(\d+), # 8 flags e.g. "0"
(\d+), # 9 bytes_sent e.g. "0"
(\d+), # 10 bytes_received e.g. "0"
([^"]*), # 11 local_uid e.g. "ring tel ring"
([^"]*), # 12 local_name e.g. "<SelfHandle>"
([^"]*), # 13 remote_uid e.g. "+4179..."
([^"]*), # 14 channel e.g. ""
(.*?), # 15 free_text e.g. "abcdef"
([^"]*), # 16 group_uid e.g. "6288879"
(\d+), # 17 outgoing e.g. "0" or "1"
(\d+) # 18 mc_profile e.g. "0" or "1"
$/px)
{
$sms{$numsms}{'sent'} = int($17);
$sms{$numsms}{'time'} = $5;
$sms{$numsms}{'number'} = $13;
$sms{$numsms}{'msg'} = $15 =~ s/""/''/ro;
++$numsms;
}else{
print STDERR "not parsed: ".$csvline."\n";
}
}
print STDERR "Parsed $numsms messages.\n";
foreach my $key (sort {$a<=>$b} keys %sms) {
print '"sms",';
my $number = $sms{$key}{'number'};
my $time = localtime($sms{$key}{'time'})->strftime('%Y.%m.%d %H:%M');
my $text = $sms{$key}{'msg'};
if ($sms{$key}{'sent'}) {
print '"SENT",';
print '"",';
print "\"$number\",";
} else {
print '"READ,RECEIVED",';
print "\"$number\",";
print '"",';
}
print '"",';
print "\"$time\",";
print '"",';
print "\"$text\"\n";
}
|
|
2018-03-09
, 06:44
|
|
Posts: 17 |
Thanked: 17 times |
Joined on Jan 2011
|
#10
|
#!/usr/bin/perl
#
# Export Maemo N900 SMS to CSV
# Allows importing to Android phones using "Anything With SMS"
#
# Use this format when importing with Anything With SMS:
# "$(folder)","$(address)","$(dateyyyy-MM-dd HH:mm:ss)","$(body)"\s*
#
# Written by Alan
#
use strict;
use warnings;
use Text::CSV;
use DBI;
use POSIX;
# SQLite format from n900 (file: el-v1.db)
# From an exported backup, in comm_and_cal.zip -> Root/home/user/.rtcom-eventlogger/backup.tgz -> el-v1.db
#
# CREATE TABLE Events (
# id INTEGER PRIMARY KEY,
# service_id INTEGER NOT NULL,
# event_type_id INTEGER NOT NULL,
# storage_time INTEGER NOT NULL,
# start_time INTEGER NOT NULL,
# end_time INTEGER,
# is_read INTEGER DEFAULT 0,
# outgoing BOOL DEFAULT 0,
# flags INTEGER DEFAULT 0,
# bytes_sent INTEGER DEFAULT 0,
# bytes_received INTEGER DEFAULT 0,
# local_uid TEXT,
# local_name TEXT,
# remote_uid TEXT,
# channel TEXT,
# free_text TEXT,
# group_uid TEXT
# );
# Output columns in the order expected by import program (Anything with SMS)
my @out_cols = ('folders', 'number', 'time', 'msg');
die "Usage: $0 <sqlite input> <csv output>" unless $#ARGV == 1;
my ($dbfile, $csvfile) = @ARGV;
my $dbh = DBI->connect('dbi:SQLite:dbname='.$dbfile, '', '', {RaiseError => 1, PrintError => 0});
my $csv = Text::CSV->new( { always_quote => 1, auto_diag => 1, sep => ',', binary => 1}) or die "Error creating CSV object: ", Text::CSV->error_diag;
open(my $csvh, '>', $csvfile) or die "Error opening $csvfile: $!";
my $sth = $dbh->prepare('select * from Events');
my $res = $sth->execute;
# assign column mapping
$csv->column_names(\@out_cols);
# Print CSV header
# Commented because Anything With SMS doesn't like it
# print header to csv
# $csv->print($csvh, \@out_cols);
# $csvh->print("\n");
my $count = 0;
while (my $in = $sth->fetchrow_hashref) {
next unless $in->{'service_id'} eq '3';
$count++;
my $out;
# convert some fields for csv output
$out->{'type'} = 'sms';
$out->{'x'} = '';
# flags
my @folders;
if ($in->{'outgoing'}) {
if ($in->{'flags'} eq '0') {
push(@folders, 'sent');
} elsif ($in->{'flags'} eq '5') {
push(@folders, 'submit');
} else {
push(@folders, 'outgoing');
}
} else {
if ($in->{'is_read'} eq '1') {
push(@folders, 'read');
} else {
push(@folders, 'read');
}
}
$out->{'folders'} = join(',', @folders);
$out->{'number'} = $in->{'remote_uid'};
$out->{'msg'} = $in->{'free_text'};
# Anything with SMS doesn't support escaped quotes or newlines in CSV files
# Replace double quotes with singles, and newlines with spaces
if (defined $out->{'msg'}) {
$out->{'msg'} =~ s{"}{'};
$out->{'msg'} =~ s{\n}{ };
}
$out->{'time'} = strftime('%Y-%m-%d %H:%M:%S', localtime($in->{'start_time'}));
$csv->print_hr($csvh, $out);
$csvh->print("\n");
}
$dbh->disconnect;
close($csvh);
print "Exported $count messages\n";
exit(0);
| The Following User Says Thank You to lameventanas For This Useful Post: | ||
![]() |
| Tags |
| export sms, fremantle |
| Thread Tools | |
|
I got an HTC Desire under Android 2.1 .
I am looking for a method to export my sms from N900 to Android.
I know a method who can import sms in file .csv from pc suite.
Or do you know an application on N900 who can generate a .csv file structured like pc suite one's ?
Thanks for advance for your help.