我正在尝试将一个大型 json 文件导入 mongodb,一次一个对象。a.json是一个 json 文件,具有包含 15 个键值对的单个记录。我正在使用以下代码:
# include<stdio.h>
#include <bson.h>
#include <mongoc.h>
int main(void)
{
int i,j,f=0;
char c,s1[50],s2[50];
FILE *fp1,*fp2;
mongoc_client_t *client;
mongoc_collection_t *collection;
bson_error_t error;
bson_oid_t oid;
bson_t *doc=NULL;
bson_t *update = NULL;
bson_t *query = NULL;
mongoc_init ();
client = mongoc_client_new ("mongodb://localhost:27017/");
collection = mongoc_client_get_collection (client, "ClickAppJson", "ClickJson");
fp1=fopen("a.json","r");
while((c=getc(fp1))!=EOF)
{
if(c=='{')
{
do{
j=0;
c=getc(fp1);
do{
s1[j]= c;
j++;
c=getc(fp1);
}
while(c !=':');
s2[j]='\0';
c=getc(fp1);
j=0;
do{
s2[j]= c;
j++;
c=getc(fp1);
}
while(c !=','||c!='}');
s2[j]='\0';
if(f==0){
bson_oid_init (&oid, NULL);
doc = BCON_NEW ("_id", BCON_OID (&oid),s1,s2);
f=1;
}
else{
query = BCON_NEW ("_id", BCON_OID (&oid));
update = BCON_NEW("$set", "{", s1, s2, "}");
}
}
while(c!='}');
}
}
fclose(fp1);
bson_destroy (doc);
mongoc_collection_destroy (collection);
mongoc_client_destroy (client);
return 0;
}
我希望一次将一个记录一个文档导入monogdb。
我在fedora 21中使用gcc编译这个程序。根据编译器没有错误。但是,当我运行这个程序时,它显示以下错误:
2015/09/22 18:32:15.0303: [13623]: DEBUG: cluster: Client initialized in direct mode.
Segmentation fault (core dumped)
我想一次将一个记录一个文档导入monogdb。请你能指出这段代码中的错误吗?提前致谢。PS 这是我在 StackOverflow 上的第一个问题。如有不足请见谅。:)