mysql不能插入汉字或者是pyspark连接mysql输出或输入时汉字存在乱码问题
2020-07-14 06:26
633 查看
首先,我的mysql版本为
用pyspark连接数据库进行输出某表的内容
[code]from pyspark.sql import SparkSession if __name__ == "__main__": """ 从mysql查询数据 """ spark = SparkSession.builder.getOrCreate() url="jdbc:mysql://192.168.1.105:3306/tylg?serverTimezone=Asia/Shanghai" user="root" password="123456" # 下方如果用的是mysql-connector8.0的要用加cj,若是5.多则不用】 dirver="com.mysql.cj.jdbc.Driver" #创建数据库连接,查询所有数据 mysql_df=spark.read.format("jdbc").option("url",url).option("dirver",dirver)\ .option("dbtable","customerinfo").option("user",user).option("password",password).load() print(type(mysql_df)) mysql_df.show()
这种情况出现了乱码
付航那个是我修复好的,而下面那个的uname就是乱码
用pyspark连接数据库进行输入某表数据
[code]from pyspark.sql import SparkSession from pyspark.sql.types import StructType, StructField, StringType, Row if __name__ == "__main__": """ 从mysql查询数据 """ spark = SparkSession.builder.getOrCreate() # 定义要插入的数据 ls = ["NO11,谢,800000", "NO12,杨,100000", "NO13,首,120000", "NO14,玉,300000"] # 将列表数据转换为rdd customerinfo_rdd = spark.sparkContext.parallelize(ls).map(lambda x: x.split(",")) # 创建schema对象 schema=StructType\ ( [ StructField("num",StringType(),True), StructField("uname",StringType(),True), StructField("amount", StringType(), True) ] ) # 构建行对象row row_rdd = customerinfo_rdd.map(lambda x: Row(x[0].strip(), x[1].strip(), x[2].strip())) # 将schema应用到rdd上,使用createDataFrame创建DataFrame customerinfo_df = spark.createDataFrame(row_rdd, schema) # customerinfo_df = customerinfo_rdd.map(lambda x: Row(num=x[0], uname=x[1], amount=x[2])).toDF() # 等价于上面的createDataFrame(row_rdd, schema) # 构建连接数据库的参数 database_conf = {} database_conf["user"] = "root" database_conf["password"] = "123456" database_conf["dirver"] = "com.mysql.cj.jdbc.Driver" customerinfo_df.write.jdbc("jdbc:mysql://192.168.1.105:3306/tylg?serverTimezone=Asia/Shanghai", "customerinfo", "append", database_conf)
这种插入后显示下面的情况
英文能正常插入而中文显示???
后来使用
show variables like '%char%';命令查看mysql的字符编码如下
发现是mysql默认的Latin1编码,需要改成其他,刚开始改的是utf8,而使用命令
[code]SET character_set_client = 'utf8'; SET character_set_connection='utf8'; SET character_set_server = 'utf8'; SET character_set_results = 'utf8';
改了之后重启mysql有变成原来的样子,这时候发现要在配置文件中修改,在mysql安装文件的my.ini修改
打开后把下图的两个位置改成了utf8
但是还是不行,甚至出现了数据库插入的时候显示这种错误
后来把这两个位置改成了gbk
插入成功了
而且python上运行查看数据也成功了
而且运行插入数据也成功了
还有就是注意创建表的时候最后要加上字符码为utf8;
相关文章推荐
- UTF8默认编码下的MYSQL命令框中输入汉字显示乱码的问题
- mysql安装后中文插入不成功或者插入后乱码的问题
- 线上问题:前端输入emoji表情符时,MySQL插入表情符乱码,修改MySQL编码支持数据库表情符
- 解决wamp中mysql输入汉字时的乱码问题。
- mysql--出现中文乱码或不能输入中文问题的Windows或Linux系统解决方法
- 解决利用hibernate连接mysql时无法插入汉字的问题
- mysql插入汉字是乱码或者问号的解决方法
- Mysql不能插入中文和中文显示乱码问题
- mysql 不能插入中文字符 中文字符读写乱码问题
- 关于命令行中mysql中文乱码以及不能插入中文数据的问题
- 中文乱码--MySQL5.0中文问题及JDBC数据库连接和JSP汉字编码问题解决方法总
- mysql出现中文乱码或不能输入中文问题的Windows或Linux系统解决方法
- MySQL插入显示汉字出现乱码问题的解决
- 解决使用mybatis连接mysql插入中文乱码问题
- MySQL中使用like查找汉字的问题 乱码或者准确性不足问题
- .net连接mysql,插入中文乱码问题
- 解决不能向mysql插入中文或乱码显示问题
- MySQL不能插入中文字符及中文字符乱码问题
- Python连接Mysql&&解决数据库汉字显示乱码问题
- 关于mysql里面写sql语句,或者直接在表里写汉字,都是乱码问题解决