参考 > 参考 > MongoDB软件包组件 > mongoimport
macOS Sierra和Go 1.6不兼容
在macOS Sierra上运行的用户需要3.2.10或更高版本 mongoimport。
MongoDB 4.4中即将进行的工具迁移
从MongoDB 4.4开始,mongoimport文档迁移到MongoDB数据库工具-mongoimport。有关即将发布的mongoimport(工具版本100.0.0)版本的更多信息,请参见该页面
。
本页上的文档仅适用于MongoDB 4.2版本mongoimport。mongoimport可以按照以下“ 可用性”部分中的说明下载MongoDB 4.2版本
。
该mongoimport工具从扩展的JSON,CSV或TSV导出(由mongoexport,或可能是另一个第三方导出工具)创建的内容中导入内容
。
有关的更多信息,请参见mongoexport文档,该文档
mongoexport提供了反向“导出”功能。
运行mongoimport系统命令行,而不是mongo外壳。
该mongoimport工具是MongoDB工具包的一部分。请查阅所用平台的
安装指南,以获取有关如何在MongoDB安装过程中安装工具包的说明。
该工具包也可以从
MongoDB下载中心获得,可以单独tools下载,也可以包含在
TGZ或ZIP下载中,具体取决于平台。在Windows上,MSI安装程序包括所有工具作为默认安装的一部分。
小费
如果从下载中心下载TGZ或ZIP文件,则可能需要更新PATH环境变量以包括安装这些工具的目录。有关
更多信息,请参见所用平台的安装指南。
警告
避免使用mongoimport和mongoexport完全实例制作备份。它们不能可靠地保留所有丰富的
BSON数据类型,因为JSON只能表示BSON支持的类型的子集。如MongoDB备份方法中所述使用mongodump
和mongorestore来实现这种功能。
从MongoDB 4.2开始,mongoimport默认情况下希望导入数据为Extended JSON v2.0(轻松模式或规范模式)。要识别扩展JSON v1.0格式的数据,请参阅
--legacy。
在早期版本中,mongoimport期望数据采用
MongoDB扩展JSON(v1)格式。
小费
在一般情况下,的版本mongoexport和
mongoimport应该匹配。也就是说,要导入从创建的数据mongoexport,您应该使用的相应版本mongoimport。
mongoimport仅支持UTF-8编码的数据文件。使用其他编码会产生错误。
从4.2版开始,MongoDB删除的--sslFIPSMode
选项mongoimport。如果
/ 实例
配置为使用FIPS模式,mongoimport
它将使用与FIPS兼容的连接
mongod/ 。mongosmongodmongos
从4.2版开始,如果您在--writeConcern选项和
选项中都指定了写入关注点
,则该
值将覆盖URI字符串中指定的写入关注点。--uri connection string--writeConcern
在早期版本中,这两个选项不兼容。
从MongoDB 4.2开始,mongoimport使用最大批处理大小为100,000来执行批量插入/向上插入操作。
为了连接到mongod具有--auth选项的强制授权,您必须使用
--username和--password选项。连接用户必须至少具有readWrite将数据导入其中的数据库角色。
mongoimport¶--help¶返回有关mongoimport的选项和用法的信息。
--verbose, -v¶增加标准输出或日志文件中返回的内部报告的数量。-v通过多次包含选项来增加详细程度(例如)-vvvvv。
--version¶返回mongoimport发行版号。
--uri=<connectionString>¶3.4.6版中的新功能。
指定可解析的URI 连接字符串(用引号引起来)以连接到MongoDB部署。
有关连接字符串的组成部分的信息,请参阅“ 连接字符串URI格式”文档。
注意
对于TLS / SSL选项,请使用命令行选项代替TLS / SSL的 URI选项(从4.2开始可用)。
重要
以下命令行选项不能与--urioption 一起使用:
--host--port--db--username--password (如果
URI连接字符串还包含密码)--authenticationDatabase--authenticationMechanism而是将这些选项指定为--uri
连接字符串的一部分。
--host=<hostname><:port>, -h=<hostname><:port>¶默认值:本地主机:27017
指定mongod要连接的主机名称。默认情况下,mongoimport尝试连接到端口号为localhost上运行的MongoDB实例27017。
要连接到副本集,请指定replSetName集合成员的
和种子列表,如下所示:
指定副本集列表格式时,mongoimport始终连接到primary。
您还可以通过仅指定该成员的主机和端口来连接到副本集的任何单个成员:
如果使用IPv6并使用<address>:<port>格式,则必须将地址和端口组合的一部分括在方括号(例如[<address>])中。
--port=<port>¶默认值:27017
指定MongoDB实例在其上侦听客户端连接的TCP端口。
--ipv6¶在3.0版中删除。
启用IPv6支持,并允许mongoimport使用IPv6网络连接到MongoDB实例。在MongoDB 3.0之前,您必须指定--ipv6使用IPv6。在MongoDB 3.0和更高版本中,始终启用IPv6。
--ssl¶启用与mongod或mongos已启用TLS / SSL支持的连接。
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--sslCAFile=<filename>¶指定.pem包含来自证书颁发机构的根证书链的文件。.pem使用相对或绝对路径指定文件的文件名
。
从3.4版开始,如果未指定--tlsCAFile/ net.tls.CAFile(或它们的别名--sslCAFile/ net.ssl.CAFile),并且您没有使用x.509身份验证,则在连接到启用TLS / SSL的服务器时将使用系统范围的CA证书存储。
要使用x.509身份验证,--tlsCAFile或者net.tls.CAFile
必须指定,除非使用--tlsCertificateSelector或
--net.tls.certificateSelector。或者,如果使用ssl别名,
--sslCAFile或net.ssl.CAFile必须指定,除非使用
--sslCertificateSelector或net.ssl.certificateSelector。
警告
版本3.2及更早版本:对于TLS / SSL连接(--ssl),以
mongod和mongos,如果mongoimport没有运行
--sslCAFile,mongoimport不会尝试验证服务器证书。这会造成过期mongod和mongos证书以及伪装成有效mongod或
mongos实例的外部进程的漏洞。如果可能发生入侵,请确保始终指定CA文件来验证服务器证书。
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--sslPEMKeyFile=<filename>¶指定.pem同时包含TLS / SSL证书和密钥的文件。.pem使用相对或绝对路径指定文件的文件名。
使用--ssl选项连接到mongod或mongos已
CAFile启用而未
启用时,此选项是必需的allowConnectionsWithoutCertificates。
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--sslPEMKeyPassword=<value>¶指定用于解密证书密钥文件的密码(即
--sslPEMKeyFile)。--sslPEMKeyPassword仅当证书密钥文件已加密时才使用该选项。在所有情况下,mongoimport都会从所有日志记录和报告输出中删除密码。
如果PEM文件中的私钥已加密并且您未指定该--sslPEMKeyPassword选项,则mongoimport将提示您输入密码。请参阅
TLS / SSL证书密码。
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--sslCRLFile=<filename>¶指定.pem包含证书吊销列表的文件。.pem使用相对或绝对路径指定文件的文件名。
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--sslAllowInvalidCertificates¶绕过服务器证书的验证检查,并允许使用无效的证书。使用该
allowInvalidCertificates设置时,MongoDB将使用无效证书记录为警告。
从MongoDB 4.0开始,如果在使用x.509身份验证时指定
--sslAllowInvalidCertificates或
(或在MongoDB 4.2中为别名或
),则无效的证书仅足以建立TLS / SSL连接,但不足以进行身份验证。net.ssl.allowInvalidCertificates: true--tlsAllowInvalidateCertificatesnet.tls.allowInvalidCertificates: true
警告
尽管可用,但请避免使用该
--sslAllowInvalidCertificates选项。如果必须使用
--sslAllowInvalidCertificates,请仅在不可能进行入侵的系统上使用该选项。
如果mongoShell(和其他
MongoDB Tools)与该--sslAllowInvalidCertificates选项一起运行
,则
mongoShell(和其他
MongoDB Tools)将不会尝试验证服务器证书。这会造成过期mongod和mongos证书以及伪装成有效mongod或mongos实例的外部进程
的漏洞
。如果仅需要禁用TLS / SSL证书中的主机名验证,请参阅--sslAllowInvalidHostnames。
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--sslAllowInvalidHostnames¶禁用TLS / SSL证书中的主机名验证。允许 mongoimport连接到MongoDB实例,即使其证书中的主机名与指定的主机名不匹配也是如此。
有关TLS / SSL和MongoDB的更多信息,请参阅 为客户端的TLS / SSL和 TLS / SSL配置配置mongod和mongos。
--username=<username>, -u=<username>¶指定用于向使用身份验证的MongoDB数据库进行身份验证的用户名。与--password和
--authenticationDatabase选项结合使用。
注意
您不能同时指定--username和--uri。
--password=<password>, -p=<password>¶指定用于对使用身份验证的MongoDB数据库进行身份验证的密码。与--username和
--authenticationDatabase选项结合使用。
要提示用户输入密码,请传递--username
不带选项--password或将空字符串指定为
--password值,如中所示。--password ""
注意
您不能同时指定--password和--uri。
--authenticationDatabase=<dbname>¶指定在其中--username创建指定内容的认证数据库。请参阅身份验证数据库。
注意
您不能同时指定--authenticationDatabase和--uri。
--authenticationMechanism=<name>¶默认值:SCRAM-SHA-1
指定mongoimport实例用于对mongod或进行身份验证的身份验证机制mongos。
在版本4.0中进行了更改: MongoDB删除了对不赞成使用的MongoDB Challenge-Response(MONGODB-CR)身份验证机制的支持。
MongoDB使用SHA-256哈希函数(SCRAM-SHA-256)添加了对SCRAM机制的支持。
| 值 | 描述 |
|---|---|
| SCRAM-SHA-1 | 使用SHA-1哈希函数的RFC 5802标准咸化挑战响应身份验证机制。 |
| SCRAM-SHA-256 | 使用SHA-256哈希函数的RFC 7677标准咸化挑战响应身份验证机制。 要求featureCompatibilityVersion设置为 版本4.0中的新功能。 |
| MONGODB-X509 | MongoDB TLS / SSL证书认证。 |
| GSSAPI(Kerberos) | 使用Kerberos的外部身份验证。此机制仅在MongoDB Enterprise中可用。 |
| 普通(LDAP SASL) | 使用LDAP的外部身份验证。您还可以PLAIN
用于验证数据库内用户。PLAIN以纯文本形式传输密码。此机制仅在MongoDB Enterprise中可用
。 |
注意
您不能同时指定--authenticationMechanism和--uri。
--gssapiServiceName=<serviceName>¶使用GSSAPI / Kerberos指定服务的名称。仅当服务未使用默认名称时才需要mongodb。
此选项仅在MongoDB Enterprise中可用。
--gssapiHostName=<hostname>¶使用GSSAPI / Kerberos指定服务的主机名。仅当计算机的主机名与DNS解析的主机名不匹配时才需要。
此选项仅在MongoDB Enterprise中可用。
--db=<database>, -d=<database>¶指定要在其上运行mongoimport的数据库的名称。
--collection=<collection>, -c=<collection>¶指定要导入的集合。如果未指定
--collection,mongoimport则从输入文件名中获取集合名称,如果文件扩展名为扩展名,则省略该扩展名。
--fields=<field1[,field2]>, -f=<field1[,field2]>¶导入在文件的第一行(即标头)中没有字段名称的csv 或tsv文件时,请指定用逗号分隔的字段名称列表。
要同时指定字段类型和字段名称,请--fields与结合使用
--columnsHaveTypes。
如果--fields在导入JSON数据时尝试包含,则
mongoimport将返回错误。--fields仅用于csv
或tsv导入。
--fieldFile=<filename>¶作为的替代--fields,--fieldFile
如果您的csv或tsv文件在文件的第一行(即标头)中不包含字段名称,则该选项允许您指定一个包含字段名称列表的文件。每行放置一个字段。
要同时指定字段类型和字段名称,请--fieldFile与结合使用
--columnsHaveTypes。
如果--fieldFile在导入JSON数据时尝试包含,则
mongoimport将返回错误。--fieldFile仅用于csv
或tsv导入。
--ignoreBlanks¶忽略csv和tsv导出中的空字段。如果未指定,则mongoimport在导入的文档中创建没有值的字段。
如果--ignoreBlanks在导入JSON数据时尝试包含,则
mongoimport将返回错误。--ignoreBlanks仅用于csv
或tsv导入。
--type=<json|csv|tsv>¶指定要导入的文件类型。默认格式为JSON,但是可以导入csv和tsv文件。
该csv解析器接受数据符合RFC符合规定
RFC 4180。因此,反斜杠不是有效的转义字符。如果使用双引号将字段括在CSV数据中,则必须通过在其他双引号前面加上前缀来转义内部双引号。
--file=<filename>¶指定包含要导入数据的文件的位置和名称。如果未指定文件,mongoimport则从标准输入(例如“ stdin”)读取数据。
--drop¶修改导入过程,以便目标实例在从输入中导入数据之前删除集合。
--headerline¶如果使用或,则将第一行用作字段名称。否则,将第一行作为不同的文档导入。--type csv--type
tsvmongoimport
如果--headerline在导入JSON数据时尝试包含,则
mongoimport将返回错误。--headerline仅用于csv
或tsv导入。
--mode=<insert|upsert|merge>¶默认值:插入
3.4版的新功能。
指定导入过程应如何处理数据库中与导入文件中的文档匹配的现有文档。
默认情况下,mongoimport使用该_id字段将集合中的文档与导入文件中的文档进行匹配。要为upsert和merge模式指定与现有文档匹配的字段,请使用--upsertFields。
| 值 | 描述 |
|---|---|
insert |
将文档插入导入文件中。如果您尝试导入包含具有唯一索引的字段(例如)的重复值的文档,mongoimport将记录错误。_id |
upsert |
用导入文件中的匹配文档替换数据库中的现有文档。mongoimport将插入所有其他文件。导入期间替换匹配的文档介绍了如何使用。--mode upsert |
merge |
将与导入文件中的文档匹配的现有文档与新文档合并。mongoimport将插入所有其他文件。
导入期间合并匹配的文档介绍了如何使用。--mode
merge |
--upsertFields=<field1[,field2]>¶指定一个