这是我从头开始学习sql/mysql的学习笔记,后续还会更新。

本笔记为coursera网站课程《Databases and SQL for Data Science with Python》的学习笔记

在本模块中,您将学习一些基本的SQL语句,并在实时数据库上动手实践它们。对一些.csv数据进行操作,完成一个操作实例。


文章目录

  • .csv数据
  • python对.csv数据进行操作
  • 一、将数据写入csv文件中
  • 二、从csv文件中读取数据
  • 通过SQL对csv文件操作
  • 1.创建测试表:m_test
  • 2.aa.csv
  • 3.读取aa.csv到m_test表


.csv数据

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),**其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。**CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。建议使用WORDPAD或是记事本来开启,再则先另存新档后用EXCEL开启,也是方法之一。

csv是最通用的一种文件格式,它可以非常容易地被导入各种PC表格及数据库中。此文件,一行即为数据表的一行。生成数据表字段用半角逗号隔开。csv文件用记事本和excel都能打开,用记事本打开显示逗号,用excel打开,没有逗号了,逗号都用来分列了,还可有Editplus打开。

https://baijiahao.baidu.com/s?id=1629072539075352018&wfr=spider&for=pc

CSV和excel两种文件的区别:

1.CSV是纯文本文件,excel不是纯文本,excel包含很多格式信息在里面。

2.CSV文件的体积会更小,创建分发读取更加方便,适合存放结构化信息,比如记录的导出,流量统计等等。

3.CSV文件在windows平台默认的打开方式是excel,但是它的本质是一个文本文件。

数据文件可以保存为CSV或者excel。

输出csv或xlsx文件,比如csv是利用成熟的三方库还是自己写(毕竟就是逗号分隔的文本),不同人可能有不同看法,但是我主张大家用现成的三方依赖包,比如javacsv\opencsv都是比较成熟的工具包。

https://zhidao.baidu.com/question/1308391225612913259.html

python对.csv数据进行操作


之前学过python对excel数据进行操作,进行存取、处理。

csv可以存储各种各样的数据,不过,通常来说,比较适合存储有相同字段或表头的一批数据,这些数据可以展示成表格。

可以使用excel开启csv文件,打开后看到的数据以excel表格的方式进行展示。

现在我们就开始使用csv将数据写入csv文件,然后将数据从csv中读取出来使用。

一、将数据写入csv文件中

调用模块,创建数据,将数据写入csv文件。

import csv

#类型为元组的数据
csv_data = (
    (1, 2, 3, 4, 5, 6),
    ('a', 'b', 'c', 'd', 'e', 'f'),
    ('p', 'y', 't', 'h', 'o', 'n')
)
output_file_name = 'csv_file.csv'

#创建函数,进行可重复操作
def save_csv(target_list, output_file_name):
    """
    将数据写入csv文件
    """
    #判断命名是否正确格式
    if not output_file_name.endswith('.csv'):
        output_file_name += '.csv'
    #以可写格式打开对应文件,如果没有则创建
    csv_file = open(output_file_name, "w", newline="")
    #先建立一行列名
    key_data = target_list[0]
    #通过遍历获取数据
    value_data = [target for target in target_list]
    #调用函数写入文件内容
    csv_writer = csv.writer(csv_file)
    csv_writer.writerow(key_data)
    csv_writer.writerows(value_data)
    #关闭文件
    csv_file.close()

#调用函数,将数据写入csv文件
save_csv(csv_data, output_file_name)

运行以上代码后,会在当前目录下创建一个csv_file.csv的文件,并写入csv_data的数据,可以使用excel打开文件查看。如下图。

sql server csv没有列头 sql csv文件_python

二、从csv文件中读取数据

import csv
input_file_name = 'csv_file.csv'


def read_csv(input_file_name):
    """
    读取csv文件数据
    """
    with open(input_file_name, 'r', encoding='utf-8') as csv_file:
        csv_reader = csv.reader(csv_file)
        # csv_reader对象,是一个列表的格式
        print(csv_reader)
        # csv_reader对象的一个迭代器,可以通过next()取出其中的元素
        print(next(csv_reader))
        # 也可以通过for循环取出所有元素
        for line in csv_reader:
            print(''.join(line))


read_csv(input_file_name)

代码描述:

1.可以通过with上下文管理的方式打开csv文件,如果想在with的代码块外对读出来的数据进行处理,则可以使用open()打开,再使用close()关闭。

2.csv通过csv.reader()来打开csv文件,返回的是一个列表格式的迭代器,可以通过next()方法获取其中的元素,也可以使用for循环依次取出所有元素。

结果如下:

sql server csv没有列头 sql csv文件_数据库_02

通过SQL对csv文件操作

1.创建测试表:m_test

SET FOREIGN_KEY_CHECKS=0; DROP TABLE IF EXISTS m_test; CREATE TABLE m_test (HST_NO decimal(12,0) NOT NULL ,UPDATE_KIND varchar(1) NOT NULL ,ITEM_ID varchar(10) NOT NULL ,ITEM_TAG varchar(255) NOT NULL ,CREATE_USER_ID varchar(15) DEFAULT NULL ,CREATE_DATE timestamp NOT NULL DEFAULT ‘2001-01-01 00:00:00’,UPDATE_USER_ID varchar(15) DEFAULT NULL ,UPDATE_DATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,LOGICAL_DELETE_FLAG tinyint(1) DEFAULT ‘0’ , PRIMARY KEY (HST_NO,UPDATE_KIND,ITEM_ID,ITEM_TAG) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

2.aa.csv

“0”,“I”,“Y005585”,“xxx”
“0”,“I”,“Y005586”,“xxx”
“0”,“I”,“Y005587”,“xxx”
“0”,“I”,“Y005588”,“xxx”

3.读取aa.csv到m_test表

LOAD DATA LOCAL
 INFILE ‘C:/aa.csv’
 INTO TABLE M_TEST
 CHARACTER SET ‘utf8’
 FIELDS
 TERMINATED BY ‘,’
 OPTIONALLY ENCLOSED BY ‘"’
 LINES TERMINATED BY ‘\n’
 (@hstNo, @updateKind, @itemId, @itemTag)
 SET
 HST_NO=@hstNo,
 UPDATE_KIND=@updateKind,
 ITEM_ID=@itemId,
 ITEM_TAG=@itemTag,
 CREATE_USER_ID=‘11’,
 CREATE_DATE=CURRENT_TIMESTAMP,
 UPDATE_USER_ID=‘11’,
 LOGICAL_DELETE_FLAG=IF(@updateKind=‘D’,1,0)

*注意csv文件的换行符是\n 不是\r\n