图片 23

MsSQL数据导入到Mongo的默认编码问题(正确导入Mongo的方法)

先说下作者操作的步调。1.从sql二〇〇九的management
studio查询5万条数据,使用右键导出为csv2.出于暗中认可导出未有带列名,手工业编写制定后扩张了列名3.行使mongoimport导入数据,错误,提醒invalid
utf8 character

背景介绍

趁着工作的上扬、必要的变型,促使大家追求应用不一样门类的数据库,丰硕发挥其各自特色。假设调整选用新品类的数据库,就需求将既有的数据迁移到新的数据库中。在此类要求中,将SQL
Server中的数据导入到MongoDB 中展现尤为卓绝。

面临这种须要,咱们优先想到的就是百度找寻第三方工具,缺憾停止如今,还平昔超小器晚成款公众认为比较满足的数额迁移工具。百度不到,我们只怕将要回头本人支付了。如此,更是花销不菲人力物力和可贵的精力。甚至,由于并未有优质的动员搬迁工具,招致品种优化频频延期。

其实,你本来不必如此!因为,还大概有一个工具,并且质量还傲睨一世。

那正是尽量开采数据库本身的导出导入作用。

 

1、第一步大家获取了二个excel表,里面有众多内需大家导入的数目。

反省了一下,是因为暗许导出为csv的时候,不是utf8的格式而是系统的暗许编码,采取openoffice编辑另存为utf8格式就足以消除编码难题,可是开采使用openoffice后列名和数码不协作,列名比比较多都叠在一齐了,即便数额是能导入进去了,可是一向无法用。

原理

 

MongoDB数据库
能够通过mongoexport/mongoimport命令实行数据的导出导入,并且扶持文件CSV格式;

SQL Server 数据库
同样能够开展导出导入【“职责”—>导出数据/导入数据】,其数量生机勃勃致能够保留到CSV文件中。

 

那正是说,大家是否足以依赖 CSV文件,在这里二种数据库间展开数据迁移呢?

答案是迟早的!答案是迟早的!答案是早晚的!

除此以外,数据直接导出导入,性要比其他工具快四个多少级。

即:透过SQL Server 和 MongoDB 自身自带的 导入导出职能
,能够兑现数据的迅猛迁移。

 

图片 1

换了风流倜傥种做法,不使用导出csv,直接copy数据到excel然后另存为csv,一切符合规律,这里就生出了三个很想获得的难点,这里运用的编码依然暗许的系列编码,为何不提示错误吗?

 将SQL Server中的数据导入到MongoDB中

 

step 1 增选钦定数据库,实行【导出数据】

图片 2

step 2  筛选导出的数据源信息

因在SQL Server 服务器上施行,服务器名称可接受地面(.
就可以),居民身份评释能够动用Window身份验证(如SQL Server
禁止使用了此window登录形式,那么将在选拔SQL Server
身份验证),然后,选拔数据库。

 图片 3

step 3 接纳导出目的(此为关键步骤

对象必要求接纳 【平面文件目的】

 图片 4

为 导出文件命名 选用 【浏览】,在张开的 分界面上 选拔导出文件类型【CSV
文件(*.csv)】

图片 5

比方说,文件命名叫SQLToMongoDB01

 图片 6

点击 【下一步】

图片 7

Step 4  钦赐表复制 或 查询

可以钦定从数据源复制多少个或多少个表和视图,如故经过 T_SQL
语句从数据源中复制查询结(可以内定接纳列 或对列三遍加工后的多寡)。

图片 8

Step 5  配置平面文件指标

在这里一步选择要导出的表或视图

图片 9

尽管想对 田野先生 字段 举办修正,能够筛选 【编辑映射】

对想要更正的列命进行重命名,举例 将SQL Server 中的 AreaCode 命名
而在MongoDB中命名称叫 AreaCodeMongoDB

图片 10

然后 点击 【下一步】

图片 11

Step 6 保存并运维李包裹

直白点击 【下一步】

 图片 12

Step 7 达成该引路

直接点击 【完结】

 图片 13

数据导出成功

图片 14

导出数据773838 笔数据。

 

Step 8 将发生的公文Copy至 MongoDB 服务器上

 

Step 9 在mongoDB 服务器上 施行 mongoimport 命令, 将从 SQL Server
导出的csv 数据导入到MongoDB中。

试行命令 为

/data/mongodb/mongobin344/bin/mongoimport –file
/data/mongodb_back/SQLToMongoDB01.csv  -h 172.X.X.XXX –port 端口 
–type csv –headerline -u 客户名 -p ‘密码’ -d testdba0906
–authenticationDatabase 认证数据库 -c SQLToMongoDB01

图片 15

执行成功,导入数据 773838 个文书档案。而且能够观望火速,不到15S。

 此部分 测量检验验证OK!

 

2、删除第1行”准考证号””XXX”….只保留大家须求的数据部分。

鉴于手工业转变来csv在数据量小得时候能够,不过数据量大的时候编辑相当的慢,就在mangement
studio中安顿了一下。选项-查询结果-sql
server-以网格彰显结果,选中“在复制或保存结果时富含列标题”那样在行使导出为csv的时候,默许正是带着列名的。

将 MongoDB中的数据导入的SQL Server 中

 

Step 1 施用 mongoexport 将MongoDB数据库中的数据导出

实施命令

/data/mongodb/mongobin344/bin/mongoexport   -h 172.X.X.X –port 端口 
–type csv  -u 客户名 -p ‘密码’ -d testdba0906 –authenticationDatabase
认证数据库  -c SQLToMongoDB01  -f 字段1,字段2,字段3,字段4,字段5 -o 
/data/mongodb_back/MongoDBToSQL.csv 

 

Step 2  将从MongoDB中程导弹出的CSV 文件上传到 SQL Server 服务器上。

 

Step 3 将CSV 文件导入到SQL Server中

(此进度,不是本作品的主要,所以不再详细表达,只指出关键步骤。)

选取数据源,请选拔【平面文件源】

图片 16

选料源表和源视图
【能够透过编制映射,修正列名,改进字段类型,修正字段长度】

 图片 17

图片 18

step 4  数据导出成功

图片 19

自己钻探数据量和源表数据意气风发致。

此部分 测量试验验证OK!

3、单击”文件”–“另存为”,类型选取为”CSV(逗号分隔卡塔尔(قطر‎(*.csv卡塔尔”,将excel表另存为csv文书档案。中间不管提醒什么生机勃勃律”是”就好了…

复制代码 代码如下:mongoimport -d local -c
testtable –type csv –headerline –file c:\inmongo.csv

 

图片 20

直白就足以了。

注意事项

 

注意1: 因为 mongoimport 导入的公文默许是json 格式,所以csv
文件,必供给在命令中指明 –type csv

再不,就无法辨识文件中的数据。报错音讯:

Failed: error processing document #1: invalid character ‘X’ looking
for beginning of value

图片 21

(X代表文件中的第一个字符)

注意 2 :  mongoimport 导入的csv文件,必定要举办 –headerline
参数,指明不导入第生龙活虎行。csv格式的公文首先表现列名。

不然 ,提醒必须要指明字段属性,报错音讯:

error validating settings: must specify –fields, –fieldFile or
–headerline to import this file type

注意 3 :CSV 文件的列数据中不可能满含“” (普通话双引号)。

再不,当导入此行数据时,提醒错误音讯

Failed: read error on entry #XXXX: line XXXX, column 110: bare ” in
non-quoted-field

图片 22

注意 4: 如若数量中带有普通话,需检查导入后是还是不是成为了乱码。

为防止乱码,需求将csv文书档案改成utf-8的编码格局就能够。举个例子使用edit with
notepad ++ 编辑器打开文件,另存为utf-8就足以了。

注意 5:MongoDB导出CSV格式必须求透过 –f 参数
指明字段名,担任报错:

Failed: CSV mode requires a field list。

注意 6:MongoDB DB
数据形式自由,何况文书档案能够内嵌,所以将MongoDB中的数据导入到SQL Server
比较困难,特别是蕴含汉语语句时。

注意 7 : SQL Server
导出多少时,字段数据中不得以富含nchar(9卡塔尔国、nchar(32卡塔尔(قطر‎、nchar(160卡塔尔等特殊字符,不然,在导出数据生成csv文件时报错。

4、重视!另存为的slyar.csv是足以用记事本可能Editplus等公事编辑器展开的,大家开发来看一下。

可是那些编码的标题很离奇,不明了有人深入摸底过并未有。

图片 23

能够看见实际csv文书档案就是txt(即你能够采用本人的txt然后换个后缀名就能够卡塔尔,只但是把各类字段之间用”,”分隔绝了罢了。既然它是txt文书档案,那么就涉嫌到了文本编码的标题!暗许保存的文件编码是ANSI,假诺您的数据库(数据表State of Qatar使用UTF-8编码,那么必然要将以此csv文件另存为UTF-8格式!