scala将csv转换成insert语句
工作中自己写的一个简单的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语句相关推荐
- Javamysql语法转化oracle_MyBatis项目实战 快速将MySQL转换成Oracle语句
一.前言 因项目需求,小编要将项目从mysql迁移到oracle中 ~ 现在将完成 基于MyBatis-Plus将项目中的MySQL语句全部转换成Oracle语句 大概实现步骤: 将项目改成支持双库配 ...
- 将mysql查询语句导出insert_sql server 数据库导出表里所有数据成insert 语句
有时候,我们想把数据库的某张表里的所有数据导入到另外一个数据库或另外一台计算机上的数据库,对于sql server有这样的一种方法 下面我以sql server 2008 R2,数据库是Northwi ...
- MyBatis快速将MySQL转换成Oracle语句
1.分页 mysql: LIMIT 0,1 oracle: ROWNUM <= 1 情景①:mysql中不含ORDER BY -- mysql SELECT * FROM 表名 LIMIT 1- ...
- C# 怎么把集合转换成数据库添加语句,把类转换成sql语句
public string GetInsertStr<T>(List<T> obj,string tableName) {string str = string.Format( ...
- excel数据表转成insert语句插入数据库
有时候得到的是一张数据图表,要将这张图表完完全全复制粘贴到数据库中是一个比较复杂的事情,如果只是一个晓得数据库,还可以一行一行的输入,但是如果是一张大的数据表的话,这个工作量就会非常大,现在为大家介绍 ...
- 地图自定义编码CSV转换成ini文件
创 建 schema.ini 文件: 有时,当您尝试使用 .csv 文件将自定义地理信息导入 Tableau 时,您可能会看到"无法使用 .csv,因为它不包含唯一列"错误消息. ...
- 字符串拼接成insert语句[简单记录]
1. 001,自吸过滤式防颗粒物呼吸器,,False,1,0,,False,, 001001,随弃式面罩,,False,2,,,False,, 001002,可更换式半面罩,,False,2,,,Fa ...
- php怎么把csv转换成excel_php如何把excel转化为csv
php把excel转化为csv的方法:首先打开相应的PHP文件:然后使用"PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV')9 U b ...
- PostgreSQL数据导出成Insert语句
导出整库(排除某张表) pg_dump --dbname=my_db_name --host=my_host_ip_addr --username=my_username --no-password ...
最新文章
- GEMM性能提升200倍,AutoKernel算子优化工具正式开源
- java 字母图形_Java字母图形
- 【python图像处理】python绘制饼状图
- 空间数据挖掘的主要方法总结
- html在线随机抽取,利用纯html+javascript实现随机抽取显示
- 【原】a.class与a .class的区别
- python3编程教学_Python3 网络编程
- 线程池和线程详细教程
- javascript函数式_如何以及为什么在现代JavaScript中使用函数式编程
- ntfs for mac使用注意事项有哪些?
- 塞尔达传说雷电大剑位置_《塞尔达传说:荒野之息》全收集——双手武器(1)...
- python3识别条码_python3转换code128条形码的方法
- (转)阿里云CentOS 7下配置及使用mysql
- Android API 实验记录 (二)
- 思科网院Packet Tracer实验(十)
- Matlab之四阶龙格—库塔法方法:解常微分初值问题
- Windows conio.h 的源码,实现gotoxy, textcolor,movetext等函数
- 变频器在电机驱动中的作用
- Weakly Supervised Semantic Segmentation list
- 【CuteJavaScript】GraphQL真香入门教程