
mongoimport -d DBName(数据库名) -c CollectionName(集合名) -type csv(文件类型,若文件类型为json则不需要指定) -file FileName.csv(文件名) -h host(主机名或主机ip,本机不需要指定)--port 27017(端口号,若使用默认端口号则不需要指定)-u tanjiti(用户名) -p xxxx(密码) --headerline (把文件第一行当成字段名)--drop (删除已存在的集合)
vim /etc/my.cnf
在[client]下添加
default-character-set=utf8
在[mysqld]下添加
default-character-set=utf8
vim /etc/mysql/my.cnf
在[client]下添加
default-character-set=utf8
在[mysqld]下添加
character_set_server=utf8
2. 脚本mysql> show variables like 'character_set_%';
#! /usr/bin/perl -w
use DBI; #处理MySQL
use MongoDB; #处理MongoDB
use MongoDB::OID;
use Encode; #处理编码use MongoDB::BSON;
#mysql 数据库配置
my $driver = "DBI:mysql";
my $database = "DatabaseName";
my $host = "HostName";
my $user = "UserName";
my $password = "Password";
#mongoDB数据库配置
my $database_mo = "DatabaseName";
my $host_mo = "HostName";
my $port = 27017;
my $collection = "CollectionName";
my $user_mo = "UserName";
my $password_mo = "Password";
################################################################
#####从MySQL数据库读取数据,存储到数组@QueryCollection中#######
#########################################################
my @QueryCollection = ();
#创建MySQL数据库连接
my $dbi = DBI->connect("$driver:database=$database;host=$host;user=$user;password=$password") or die "Cannot connect: ".DBI->errstr;
#统一MySQL客户端与服务端的编码为utf8,这一步非常重要,解决乱码
$dbi->do("SET character_set_client = 'utf8'");
$dbi->do("SET character_set_connection = 'utf8'");
$dbi->do("SET character_set_results = 'utf8'");
#构造SQL查询语句
my $sth = $dbi->prepare("select * from TableName") or die "Cannot prepare sql statement".DBI->errstr;
#执行查询
$sth->execute();
#存储查询结果集到数组@QueryCollection中my $i=0;
while(my $row = $sth->fetchrow_hashref()){
#将单条查询结果存入到散列%QueryCollection中
my %QueryCollection = ();
#替换ColumnName为具体的列名
$QueryCollection{"ColumnName1"} = $row->{ColumnName1};
$QueryCollection{"ColunmName2"} = $row->{ColumnName2};
...
#将散列%QueryCollection的引用存储到数组@QueryCollection中
$QueryCollection[$i] = \%QueryCollection;
$i++;
}
#关闭查询
$sth->finish();
#关闭MySQL连接
$dbi->disconnect();
################################################################
#####将数组@QueryCollection中的结果集插入到MongoDB中#######
#########################################################
#创建MongoDB 连接
my $conn = MongoDB::MongoClient->new("host" => $host_mo, "username" => $user_mo, "password" => $password_mo, "db_name" => $database_mo, "port" => $port);
#指定数据库
my $db = $conn->get_database($database_mo);
#指定集合名
my $coll = $db->get_collection($collection);
foreach(@QueryCollection){
my %QueryCollection = %$_;
#替换ColumnName为具体的列名 (字段名)
my $ColumnName1 = $QueryCollection{"ColumnName1"};
my $ColumnName2 = $QueryCollection{"ColumnName2"};
....
#将对应的列(字段)插入MongoDB中,如果列(字段)中包含中文字符,需要先进行utf8解码,mongodb-perl驱动#会先将字符encode为utf8后插入
$MongoDB::BSON::looks_like_number = 1; #为了将变量以数据类型的插入MongoDB中$coll->insert({ColumnName1 => $ColumnName1, ColumnName2=>decode_utf8($ColumnName2)});
}