精华内容
下载资源
问答
  • java/SpringBoot项目将json文件内容写入数据库大致步骤:添加依赖Jackson->利用ObjectMapper的readValue读取json文件,转为Map对象->读取过后对处理map,分别按需求进行取值,添加进数据库即可那么开始操作!1...

    java/SpringBoot项目将json文件内容写入数据库

    大致步骤:

    添加依赖Jackson

    ->利用ObjectMapper的readValue读取json文件,转为Map对象

    ->读取过后对处理map,分别按需求进行取值,添加进数据库即可

    那么开始操作!

    1.添加依赖包

    com.fasterxml.jackson.core

    jackson-core

    2.9.8

    2.实体,构造和get/set方法自然不用多说,按需设置

    3.写好数据库具体基础添加方法

    service接口->impl实现类->调用的mapper数据库方法->mybatis的核心sql语句*mapper.xml文件!

    4.操作json文件也是这里的核心代码(sss()是测试方法)

    emmmm…具体步骤看注释!

    public boolean sss(){

    ObjectMapper mapper = new ObjectMapper();//实例一个ObjectMapper

    try {

    Map map = mapper.readValue(

    new File("E:\\WorkSpace\\msg\\src\\main\\resources\\json\\hotelList\\hotellist_cityId1.json"),//使用mapper.readValue,读取json文件

    new TypeReference>(){});

    // public T readValue(File src, TypeReference valueTypeRef)调用这个,暂时猜测是,前者是具体文件,后者是需要加工成的参考类型,这里是通过jsonFactory处理为map文件

    //取得需要的hotels,(这里hotelList就是整个json文件最外成的key,value就是hotels但也是map,强转为list就可进行遍历。)

    List hotels = (List) map.get("HotelList");

    Hotel hotel = new Hotel();//实例化实体对象

    int inser=0;//计算添加了多少条

    for (int i=0;i

    Map h = (Map) hotels.get(i);

    //封装实体

    hotel.setCityID(h.get("CityID")==null?null:(Integer) h.get("CityID"));//添加三元运算,主要是判断是否为空,为空就写null,不为空就转为需要的类型

    hotel.setNameChn(h.get("NameChn")==null?null:h.get("NameChn").toString());

    hotel.setNameEng(h.get("NameEng")==null?null:h.get("NameEng").toString());

    hotel.setAddress(h.get("Address")==null?null:h.get("Address").toString());

    hotel.setAddressEng(h.get("AddressEng")==null?null:h.get("AddressEng").toString());

    hotel.setStar(h.get("star")==null?null:(Integer) h.get("star"));

    hotel.setIntroduction(h.get("Introduction")==null?null:h.get("Introduction").toString());

    hotel.setLatitude(h.get("Latitude")==null?null:h.get("Latitude").toString());

    hotel.setLongitude(h.get("Latitude")==null?null:h.get("Latitude").toString());

    hotel.setCommentScore(h.get("CommentScore")==null?null:Double.parseDouble( h.get("CommentScore").toString()));//intger装doouble 要先转为string

    hotel.setRemarks(h.get("Remarks")==null?null:h.get("Remarks").toString());

    insert(hotel);//添加进数据库

    inser ++;

    }

    System.out.println("添加条数:"+inser);

    } catch (IOException e) {

    e.printStackTrace();

    }

    return false;

    }

    5.测试,调用即可

    @Test

    public void contextLoads() {

    hotelService.sss();

    }

    注意:

    在写测试的时候犯了一个错,导致空指针异常。

    错误: 之前是通过HotelServiceImpl hotelService1=new HotelServiceImpl();然后直接调hotelService1.sss()方法,就导致了关于映射mybatis数据库方法,的mapper/DAO接口的 对象一直报空指针!

    解决: 在service中多写一个方法,impl中sss()作实现,测试实例就是用:

    @Resource

    private HotelService hotelService;

    测试:

    hotelService.sss();

    ok!终于解决一个空指针异常!

    6.其实还有起他的方法,这里就不多说了。。。

    这里是同事用的另一种:

    展开全文
  • java/SpringBoot项目将json文件内容写入数据库 大致步骤: 添加依赖Jackson ->利用ObjectMapper的readValue读取json文件,转为Map<String,Object>对象 ->读取过后对处理map,分别按需求...

    java/SpringBoot项目将json文件内容写入数据库

    大致步骤:
    添加依赖Jackson
    ->利用ObjectMapper的readValue读取json文件,转为Map<String,Object>对象
    ->读取过后对处理map,分别按需求进行取值,添加进数据库即可

    那么开始操作!
    1.添加依赖包

    		<dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>2.9.8</version>
            </dependency>
    

    2.实体,构造和get/set方法自然不用多说,按需设置
    3.写好数据库具体基础添加方法
    service接口->impl实现类->调用的mapper数据库方法->mybatis的核心sql语句*mapper.xml文件!
    4.操作json文件也是这里的核心代码(sss()是测试方法)
    emmmm…具体步骤看注释!

    		  public boolean sss(){
        ObjectMapper mapper = new ObjectMapper();//实例一个ObjectMapper
        try {
            Map<String,Object> map = mapper.readValue(
                    new File("E:\\WorkSpace\\msg\\src\\main\\resources\\json\\hotelList\\hotellist_cityId1.json"),//使用mapper.readValue,读取json文件
                    new TypeReference<Map<String, Object>>(){});
            // public <T> T readValue(File src, TypeReference valueTypeRef)调用这个,暂时猜测是,前者是具体文件,后者是需要加工成的参考类型,这里是通过jsonFactory处理为map文件
            //取得需要的hotels,(这里hotelList就是整个json文件最外成的key,value就是hotels但也是map,强转为list就可进行遍历。)
            List<Hotel> hotels = (List<Hotel>) map.get("HotelList");
            Hotel hotel = new Hotel();//实例化实体对象
            int inser=0;//计算添加了多少条
            for (int i=0;i<hotels.size();i++){
               Map h = (Map) hotels.get(i);
               //封装实体
                hotel.setCityID(h.get("CityID")==null?null:(Integer) h.get("CityID"));//添加三元运算,主要是判断是否为空,为空就写null,不为空就转为需要的类型
                hotel.setNameChn(h.get("NameChn")==null?null:h.get("NameChn").toString());
                hotel.setNameEng(h.get("NameEng")==null?null:h.get("NameEng").toString());
                hotel.setAddress(h.get("Address")==null?null:h.get("Address").toString());
                hotel.setAddressEng(h.get("AddressEng")==null?null:h.get("AddressEng").toString());
                hotel.setStar(h.get("star")==null?null:(Integer) h.get("star"));
                hotel.setIntroduction(h.get("Introduction")==null?null:h.get("Introduction").toString());
                hotel.setLatitude(h.get("Latitude")==null?null:h.get("Latitude").toString());
                hotel.setLongitude(h.get("Latitude")==null?null:h.get("Latitude").toString());
                hotel.setCommentScore(h.get("CommentScore")==null?null:Double.parseDouble( h.get("CommentScore").toString()));//intger装doouble 要先转为string
                hotel.setRemarks(h.get("Remarks")==null?null:h.get("Remarks").toString());
                insert(hotel);//添加进数据库
                inser ++;
            }
            System.out.println("添加条数:"+inser);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return false;
    }
    

    5.测试,调用即可

    	 @Test
    	    public void contextLoads() {
    	        hotelService.sss();
    	    }
    

    注意:
    在写测试的时候犯了一个错,导致空指针异常。
    错误: 之前是通过HotelServiceImpl hotelService1=new HotelServiceImpl();然后直接调hotelService1.sss()方法,就导致了关于映射mybatis数据库方法,的mapper/DAO接口的 对象一直报空指针!
    解决: 在service中多写一个方法,impl中sss()作实现,测试实例就是用:
    @Resource
    private HotelService hotelService;
    测试:
    hotelService.sss();
    ok!终于解决一个空指针异常!
    6.其实还有起他的方法,这里就不多说了。。。
    这里是同事用的另一种:https://blog.csdn.net/qq_43419029/article/details/87857039

    展开全文
  • 算法需要读取整个文件作为一个分片,因此自定义了WholeFileInputFormat类和WholeFileRecordReader类用于实现一个map能够读取一整个文件。 Configuration类实例化的对象和HBaseConfiguration类实例化的对象作用不同...

        算法需要读取整个文件作为一个分片,因此自定义了WholeFileInputFormat类和WholeFileRecordReader类用于实现一个map能够读取一整个文件。

        Configuration类实例化的对象和HBaseConfiguration类实例化的对象作用不同,我遇到的问题是:若是只用Configuration类创建的对象conf,则job任务可以提交成功,输入分片也成功,但是在map方法执行的过程中会报错如下(

    java.lang.ClassNotFoundException: org.apache.hadoop.hbase.HTable

    ),若是用HBaseConfiguration类创建的对象,则会报错找不到WholeFileInputFormat类。

        所以在main函数中我们创建了Configuration类的对象conf,在mapper类的setup()方法中重新实例化了一个HBaseConfiguration类的对象,从而达到要求。

        

    package hbasetest;
    
    import java.io.IOException;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.conf.Configured;
    import org.apache.hadoop.fs.FSDataInputStream;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.Path;
    import org.apache.hadoop.hbase.HBaseConfiguration;
    import org.apache.hadoop.hbase.client.ConnectionFactory;
    import org.apache.hadoop.hbase.client.HTable;
    import org.apache.hadoop.hbase.client.Put;
    import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
    import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;
    import org.apache.hadoop.hbase.util.Bytes;
    import org.apache.hadoop.io.BytesWritable;
    import org.apache.hadoop.io.LongWritable;
    import org.apache.hadoop.io.NullWritable;
    import org.apache.hadoop.io.Text;
    import org.apache.hadoop.mapreduce.InputSplit;
    import org.apache.hadoop.mapreduce.Job;
    import org.apache.hadoop.mapreduce.Mapper;
    import org.apache.hadoop.mapreduce.RecordReader;
    import org.apache.hadoop.mapreduce.TaskAttemptContext;
    import org.apache.hadoop.mapreduce.Mapper.Context;
    import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
    import org.apache.hadoop.mapreduce.lib.input.FileSplit;
    import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
    import org.apache.hadoop.util.GenericOptionsParser;
    import org.apache.hadoop.util.Tool;
    import org.apache.hadoop.util.ToolRunner;
    
    public class h2htest2  extends Configured implements Tool {
    	
    	// HBASE_ROOT_DIR 配置成和hbase-site.xml文件中一样的
    	private static final String HBASE_ROOT_DIR = "hdfs://ip地址:60000/hbase";//将其替换为自己的ip地址
    	public static Configuration conf;
    
    	static class WholeFileInputFormat extends FileInputFormat{
    
    		@Override
    		public RecordReader createRecordReader(InputSplit split, TaskAttemptContext context)
    				throws IOException, InterruptedException {
    			// TODO Auto-generated method stub
    			RecordReader<NullWritable, BytesWritable> recordReader = new WholeFileRecordReader();
    			recordReader.initialize(split, context);
                return recordReader;
    		}
    		
    	}
    	
    	static class WholeFileRecordReader extends RecordReader{
    		private FileSplit fileSplit;  
    		private FSDataInputStream fis;  
    		private Text key = null;  
    		private Text value = null;  
            
    		private boolean processed = false; 
    		@Override
    		public void close() throws IOException {
    			// TODO Auto-generated method stub
    			
    		}
    
    		@Override
    		public Object getCurrentKey() throws IOException, InterruptedException {
    			// TODO Auto-generated method stub
    			return this.key;
    		}
    
    		@Override
    		public Object getCurrentValue() throws IOException, InterruptedException {
    			// TODO Auto-generated method stub
    			return this.value;
    		}
    
    		@Override
    		public float getProgress() throws IOException, InterruptedException {
    			// TODO Auto-generated method stub
    			return processed ? fileSplit.getLength() : 0;
    		}
    
    		@Override
    		public void initialize(InputSplit inputSplit, TaskAttemptContext context) throws IOException, InterruptedException {
    			// TODO Auto-generated method stub
    			fileSplit = (FileSplit)inputSplit;  
    			Configuration job = context.getConfiguration();  
    			Path file = fileSplit.getPath();  
    			FileSystem fs = file.getFileSystem(job);  
    			fis = fs.open(file);
    		}
    
    		@Override
    		public boolean nextKeyValue() throws IOException, InterruptedException {
    			// TODO Auto-generated method stub
    			   
    	          if(key == null){  
    	              key = new Text();  
    	          }  
    	          if(value == null){  
    	              value = new Text();  
    	          }  
    	          if(!processed){  
    	              byte[] content = new byte[(int)fileSplit.getLength()];  
    	              Path file = fileSplit.getPath();  
    	              //System.out.println(file.getName());  
    	              key.set(file.getName());  
    	                
    	              org.apache.hadoop.io.IOUtils.readFully(fis, content, 0, content.length);  
    	              String sendString=new String(  content , "ISO-8859-1" );  
    	              //System.out.println(sendString);  
    	              value.set(new Text(sendString));  
    	          processed = true;  
    	          return true;  
    	          }  
    	          return false; 
    		}
    		
    	}
        
    	static class DataImportToHbaseMapper extends Mapper<Text, Text, ImmutableBytesWritable, Put> {
            public Configuration hbaseconf;
            @Override
            protected void setup(Context context)throws IOException, InterruptedException{
                super.setup(context);
                conf = context.getConfiguration(); // 在map任务执行前将conf设置好
               hbaseconf = new HBaseConfiguration(conf);//以conf作为参数创建新的hbaseconf对象
             hbaseconf.set("hbase.zookeeper.quorum", "master,slave1,slave2");//将masterslave1slave2替换成IP地址
             hbaseconf.set("hbase.zookeeper.property.clientPort", "2181");
    hbaseconf.set("dfs.socket.timeout", "3600000"); } @Override protected void map(Text key, Text value, Context context) throws IOException, InterruptedException { String line = value.toString(); String[] lines = value.toString().split("\n"); ImmutableBytesWritable immutable = new ImmutableBytesWritable(Bytes.toBytes("test")); Put put = new Put(Bytes.toBytes("test-2 999"));//rowkey为test-2 999 put.add(Bytes.toBytes("instance"),Bytes.toBytes("testkey"),Bytes.toBytes("testvalue")); //列簇为instance context.write(immutable, put); } } @Override public int run(String[] arg0) throws Exception { Job job = Job.getInstance(getConf(), h2htest2.class.getSimpleName()); job.setJarByClass(h2htest2.class); //job.setInputFormatClass(TextInputFormat.class); job.setInputFormatClass(WholeFileInputFormat.class); Path inPath = new Path("hdfs://IP地址/test/input_1" );//替换IP地址 FileInputFormat.setInputPaths(job, inPath); job.setMapperClass(DataImportToHbaseMapper.class); job.setMapOutputKeyClass(ImmutableBytesWritable.class); job.setMapOutputValueClass(Put.class); TableMapReduceUtil.initTableReducerJob("kk_k2", null, job);//表名为kk_k2
    job.setNumReduceTasks(0); TableMapReduceUtil.addDependencyJars(job); return job.waitForCompletion(true) ? 0 : 1; } public static void main(String[] args) throws Exception { conf = new Configuration(); String[] otherArgs = new GenericOptionsParser(args).getRemainingArgs();//因为我定义了输入路径所以不需要从键盘进行输入/* if (otherArgs.length != 2) { System.err.println(" ERROR: <dataInputDir> <tableName>"); System.exit(2); }*/ int status = ToolRunner.run(conf, new h2htest2(), otherArgs); System.exit(status); }}
    展开全文
  • json写入数据库或生成excel

    千次阅读 2018-08-18 11:01:37
    通过curl爬取接口获得的数据格式为JSON,想把json数据存放到数据库中或者存放进excel表格,应该怎么做? 【注意:这里的json格式为list里面有map [{“id”: 1, “name”:”lineuman”}, {“id”: 2, “name”:”...

    json 变成sql插入语句,或者变成excel,这件事本质上是数据格式的切换,数据还是那些数据只不过格式发生了变化。这个转换和翻译有些类似,但还不太一样,语言翻译里面涉及到很多感性的东西,而转换格式是固定的。

    通过curl爬取接口获得的数据格式为JSON,想把json数据存放到数据库中或者存放进excel表格,应该怎么做?
    【注意:这里的json格式为list里面有map [{“id”: 1, “name”:“lineuman”}, {“id”: 2, “name”:“lineuman”}]】

    这让我想起了把大象装冰箱总共分几步?
    1.读取JSON字符串
    2.将json转化为INSERT或update语句
    3. 执行SQL语句

    具体细节处理
    根据json格式建表,确定数据类型,生成sql语句,执行。
    现成的工具,了解一下 http://convertjson.com/json-to-sql.htm

    json->excel
    现成的工具,了解一下 https://json-csv.com/

    展开全文
  • 批量导入数据库思想之一:页面上传excel表格后台解析excel表格的数据暂放数据结构中(list或Map,自己看情况处理),再把list里面的数据批量存入数据库。直接贴代码:前端: 文件描述:请选择文件:controller中:// 上传...
  • long start = System.currentTimeMillis();File file = new File("test.txt...Map map = new HashMap();try {FileInputStream fis = new FileInputStream(file);InputStreamReader isr = new InputStreamReader(fis)...
  • 批量导入数据库思想之一:页面上传excel表格后台解析excel表格的数据暂放数据结构中(list或Map,自己看情况处理),再把list里面的数据批量存入数据库。直接贴代码: 前端:<form action="upload" enctype=...
  • public void importTerminalGroupFile(Map<String, Object> search) { String fileName = StrUtils.toString(search.get("fileName")); String base64 = StrUtils.toString(search.get("file"...
  • package www.sungoal.com... import java.io.File; import java.util.ArrayList; import java.util.List;...import java.util.Map; import org.apache.lucene.document.Document; import org.apache.lucene.index....
  • [CacheSynchronize()],INFO: No system was found in cache (from signature map file), will not process or synchronize informations found in the database database: compiled support for (mysql) database:...
  • 1.首先写一个将文件写入xml的方法//生成的XML public Map savereqXML(String requestXML,String responseXML,String name){ String day1 = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); String ...
  • 通过ADO对数据库进行读写的开发实例,SQL数据库Image字段的读写 通过map容器进行图像显示
  • protected void map(LongWritable key, Text value, Mapper, Text, Text, DBUserWritable>.Context context) throws IOException, InterruptedException { String[] values=value.toString().split(" "); ...
  • 我还有一个问题要问你:下面的代码执行以下操作对于文件夹中的每个文件打开文件并阅读其内容将每一行分成标记将每个标记(单词)保存在hasMap中准备数据库查询(选择表单文字...)对于记号与包含在数据库写入1.0中的单词...
  • 这里省略数据库查询部分代码(数据库查询到的数据放在了MAP集合中) 直接上控制器代码: 说明:我将report_template.xlsx模板放到了resources目录下。 @RequestMapping("/exportBusinessReport") public Result exp.....
  • 大多情况下很多数据因为格式简单,不需要存储在数据库内,故而写入内存是最好的选择,同时也减少了读取数据库的耗时 package main import ( "fmt" "os" "encoding/json" "io/ioutil" ) func main() { // os....
  • Bean :  public class XXXBean { ...插入数据库的字段中,id 就是String类型的值,其中 name , age 是 XXXXBean 中的一个 List<Bean> ListName 中的属性。          
  • 之前一直在做数据处理相关工作,其中一项就是在全量引擎日志中按照指定要求取出数据并插入到MySQL中,一般做法是通过Spark直接将HBase中的全量引擎日志读取出来,使用filter和map方法进行筛选处理,然后将结果RDD...
  • 二级联动,数据库查询,动态写入

    千次阅读 2012-09-18 21:56:58
    本项目使用三层架构,数据访问层进行访问数据库,业务逻辑层处理数据,页面显示,父栏目直接由数据库查询循环显示,子栏目写入Js 数组,通过改变父栏目而动态改变子栏目。 //Dao类数据访问层代码  public ...
  • 通过eclipse方法来操作Hadoop集群上cassandra数据库(包括配置cassandra,创建Keyspace对象以及往数据库写入数据); 创建map/reduce工程,命名为CassandraPro,需要把cassandra的lib目录下的jar包拷贝到hadoop的lib...
  • xml文件读取到数据库第一步,导包c3p0,dom4j,jaxen,MySQL-connector第二步 xml文件,config文件第三步 javabean第四步 c3p0的工具类第五步 读取xml文件SAXReader中的xpath的方式首先需要map集合添加别名,遍历...
  • 上篇:Gavin:十次方社交项目 第2天 查询与缓存​zhuanlan.zhihu.com一、MongoDB简介 1、吐槽和评论数据特点分析吐槽和...2、什么是MongoDB MongoDB 是一个跨平台的,面向文档的数据库,是当前 NoSQL 数据库产品中最...
  • import java.util.Map; import com.xnmzdx.storm.util.ThreadUitls; import backtype.storm.spout.SpoutOutputCollector; import backtype.storm.task.TopologyContext; import backtype.storm.topol.
  • #需要使用的模板 use strict; use Spreadsheet::... use Unicode::Map();#该引用是为了实现中文的写入 use DBI; use Encode;   #需要定义的全局变量 my $MYEXCEL;
  • protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> params = new HashMap<>(); params.put("matriculation_number", matriculation_number); params...
  • 通过Map/Reduce进行批处理递送到Apache Hadoop仍然是中枢环节。,但随着要从“超思维速度“分析方面获取竞争优势的压力递增,因此Hadoop(分布式文件系统)自身经历重大的发展。科技的发展允许实时查询,如Apache Drill...
  • 在python的应用程序中,不需要关系型数据库时,如MySQL 可以使用python提供的持久字典dbm来存储名称和值(键值对) 这个类似于java的中的java.util.Map对象。 区别如下: 存储在硬盘上面 dbm的键值对必须是字符...
  • // 建立数据库连接 DBConfiguration.configureDB(conf, "com.mysql.jdbc.Driver", "jdbc:mysql://localhost:3306/school", "root", "123456"); // 写入"wordcount"表中的数据 String[] fields = { ...
  • 需要再映射属性字段增加Not.Insert() ...Map(x => x.Provrince, "PROVRINCE").Not.Insert(); Map(x => x.City, "CITY").Not.Insert(); 转载于:https://www.cnblogs.com/bobo-show/p/5132485.html...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 248
精华内容 99
关键字:

map写入数据库