工作中自己写的一个简单的scala小工具类,主要对字符类型的字段在拼装SQL时加引号,null值在csv文件力的几种形式。

如果数据量比较小,可以直接insert进去的库,又不方便直接导入文件的(比如某环境某库某服务被某破人禁用,库还出问题了,只能通过其他途径insert进去QAQ)就有用了。

用scala写的,其他语言都差不多啦。


package csvInsertSQLServer.service
import java.io.FileWriterimport scala.io.Source/**  * 通过CSV文件,及其预处理的字段类型字符串,输出insert语句  * Luojie at 2017-03-08  */class csv2InsertSQLServer {  /**    * @param CLASS_PATH   输入/输出路径    * @param inFilename   输入文件名    * @param tableName    表名    * @param headType     表字段的类型,以竖线(|)分割    */  def mkSQL(CLASS_PATH: String, inFilename: String, tableName: String, headType: String): Unit = {    //输入/输出文件    val IN_FILE_NAME = CLASS_PATH + "\\inData\\" + inFilename    val OUT_FILE_NAME = CLASS_PATH + "\\outData\\" + inFilename    //SQL字符串    val inSqlString: StringBuilder = new StringBuilder    //读取文件(CSV)    val sourceFile = Source.fromFile(IN_FILE_NAME, "utf-8")    //解析字段类型    val headTypeList: Array[String] = headType.split("\\|")    //拼装SQL    inSqlString.append("insert into " + tableName + " values ")    for (line <- sourceFile.getLines) {      inSqlString.append("(")      val lineList: Array[String] = line.split(",")      val len = lineList.length      for (i <- 0 to len - 1) {        //null值处理        if (lineList(i) == "\\N"||lineList(i) == "Null"||lineList(i) == "\\NuN") inSqlString.append("null,")        //字符类型的字段拼装时候加引号        else if (headTypeList(i).contains("varchar")||headTypeList(i).contains("string"))          inSqlString.append("\"" + lineList(i) + "\",")        else inSqlString.append(lineList(i) + ",")      }      inSqlString.deleteCharAt(inSqlString.length-1)      inSqlString.append("),\n")    }    val outFileWriter = new FileWriter(OUT_FILE_NAME)    outFileWriter.write(inSqlString.deleteCharAt(inSqlString.length-1).toString() + "\n")    println(inSqlString.deleteCharAt(inSqlString.length-1))    outFileWriter.close()    sourceFile.close()  }}

调用:

package csvInsertSQLServerimport csvInsertSQLServer.service.csv2InsertSQLServer/**
  * Created by luojie on 2017/3/8.
  */
object c2Server {val CLASS_PATH = getClass.getResource("").getPathdef main(args: Array[String]): Unit = {val inString = "2222.txt"
    val tableName = "dm_plan_pre_point_d"
   // val headType = "varchar(200)|int(11)|varchar(200)|varchar(200)|int(11)|int(11)|bigint(20)|varchar(200)|decimal(20,8)|decimal(20,8)|varchar(200)|varchar(200)|int(11)|varchar(200)|varchar(200)|varchar(200)|decimal(20,8)|decimal(20,8)|varchar(200)|varchar(200)|decimal(20,8)|decimal(20,8)|decimal(20,8)|decimal(20,8)|decimal(20,8)|decimal(20,8)|decimal(20,8)|decimal(20,8)|varchar(200)|int(11)|int(11)|varchar(200)|bigint(20)|varchar(200)|varchar(200)|decimal(20,8)|decimal(20,8)|decimal(20,8)|decimal(20,8)|decimal(20,8)|varchar(200)|varchar(200)|varchar(200)|varchar(200)|varchar(200)|int(11)|int(11)|int(11)|double|int(11)|int(11)|varchar(200)|"
    val headType = "varchar|int|int|int|varchar|varchar|int|int|int|double|double|int|varchar|int|int|double|double|double|double|int"
    val c2s = new csv2InsertSQLServerc2s.mkSQL(CLASS_PATH, inString, tableName, headType)}
}

scala将csv转换成insert语句相关推荐

  1. Javamysql语法转化oracle_MyBatis项目实战 快速将MySQL转换成Oracle语句

    一.前言 因项目需求,小编要将项目从mysql迁移到oracle中 ~ 现在将完成 基于MyBatis-Plus将项目中的MySQL语句全部转换成Oracle语句 大概实现步骤: 将项目改成支持双库配 ...

  2. 将mysql查询语句导出insert_sql server 数据库导出表里所有数据成insert 语句

    有时候,我们想把数据库的某张表里的所有数据导入到另外一个数据库或另外一台计算机上的数据库,对于sql server有这样的一种方法 下面我以sql server 2008 R2,数据库是Northwi ...

  3. MyBatis快速将MySQL转换成Oracle语句

    1.分页 mysql: LIMIT 0,1 oracle: ROWNUM <= 1 情景①:mysql中不含ORDER BY -- mysql SELECT * FROM 表名 LIMIT 1- ...

  4. C# 怎么把集合转换成数据库添加语句,把类转换成sql语句

    public string GetInsertStr<T>(List<T> obj,string tableName) {string str = string.Format( ...

  5. excel数据表转成insert语句插入数据库

    有时候得到的是一张数据图表,要将这张图表完完全全复制粘贴到数据库中是一个比较复杂的事情,如果只是一个晓得数据库,还可以一行一行的输入,但是如果是一张大的数据表的话,这个工作量就会非常大,现在为大家介绍 ...

  6. 地图自定义编码CSV转换成ini文件

    创 建 schema.ini 文件: 有时,当您尝试使用 .csv 文件将自定义地理信息导入 Tableau 时,您可能会看到"无法使用 .csv,因为它不包含唯一列"错误消息. ...

  7. 字符串拼接成insert语句[简单记录]

    1. 001,自吸过滤式防颗粒物呼吸器,,False,1,0,,False,, 001001,随弃式面罩,,False,2,,,False,, 001002,可更换式半面罩,,False,2,,,Fa ...

  8. php怎么把csv转换成excel_php如何把excel转化为csv

    php把excel转化为csv的方法:首先打开相应的PHP文件:然后使用"PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV')9 U b ...

  9. PostgreSQL数据导出成Insert语句

    导出整库(排除某张表) pg_dump --dbname=my_db_name --host=my_host_ip_addr --username=my_username --no-password ...

最新文章

  1. GEMM性能提升200倍,AutoKernel算子优化工具正式开源
  2. java 字母图形_Java字母图形
  3. 【python图像处理】python绘制饼状图
  4. 空间数据挖掘的主要方法总结
  5. html在线随机抽取,利用纯html+javascript实现随机抽取显示
  6. 【原】a.class与a .class的区别
  7. python3编程教学_Python3 网络编程
  8. 线程池和线程详细教程
  9. javascript函数式_如何以及为什么在现代JavaScript中使用函数式编程
  10. ntfs for mac使用注意事项有哪些?
  11. 塞尔达传说雷电大剑位置_《塞尔达传说:荒野之息》全收集——双手武器(1)...
  12. python3识别条码_python3转换code128条形码的方法
  13. (转)阿里云CentOS 7下配置及使用mysql
  14. Android API 实验记录 (二)
  15. 思科网院Packet Tracer实验(十)
  16. Matlab之四阶龙格—库塔法方法:解常微分初值问题
  17. Windows conio.h 的源码,实现gotoxy, textcolor,movetext等函数
  18. 变频器在电机驱动中的作用
  19. Weakly Supervised Semantic Segmentation list
  20. 【CuteJavaScript】GraphQL真香入门教程

热门文章

  1. HTTP tunneling is disabled问题 解决
  2. 人体捕捉:《SMPL-X》
  3. SFFAI分享 | 张杰:针对图像处理网络的模型水印【附PPT与视频资料】
  4. 数据结构与算法10:图与图搜索
  5. 我跪了!OpenAI发布DALL·E 2!AI化身「现实主义画师」,有详细论文!
  6. Spark Streaming与流处理
  7. 防止电子元器件烧坏那些要避的坑
  8. 用户IP访问次数统计
  9. Hexo博客中插入图片,在网页中无法显示:采用图床外链的方法
  10. 人工智能 5.搜索树求解