方法二:缺点--需要写代码,步骤稍多;优点--数据几秒内就可导完,以下是我实际工作场景
步骤一:建表:
步骤二:查看本地文件导入权限目录
步骤三:将csv文件移到C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/此目录,并转为utf8,cmd可实现
powershell -Command "(Get-Content -Path 'D:/工作文件/提成复核/24财年/12月核算/数据源/毛利数据/业绩单商品明细/629973ProductDetail1736831527735.csv' -Encoding Default) | Set-Content -Path 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/qd1_utf8.csv' -Encoding utf8"
步骤四:简单清洗数据,如果数据不需要清洗可忽略此项,因为我这个数据是否仓发列为null的数据乱码(用的python)
import pandas as pd
加载CSV文件
input_file_path = 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/qd1_utf8.csv'
df = pd.read_csv(input_file_path)
删除“是否仓发”字段为空的行
df_cleaned = df.dropna(subset=['是否仓发'])
将清理后的数据保存到新的CSV文件
output_file_path = 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/qd2_utf8.csv'
df_cleaned.to_csv(output_file_path, index=False)
print(f"已成功删除包含空值的行,并保存到 {output_file_path}")
print(f"已成功删除包含空值的行,并保存到 {output_file_path}")
步骤五:数据拆分行,如果数据不大不用拆,我这个数据比较大,不拆执行会导致超载,如果显示超载也可以不拆,修改配置执行时长也可以
import pandas as pd
chunk_size = 100000 # 每个文件的大小,这里设置为每10万行一个文件
input_file_path = 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/qd2_utf8.csv'
for i, chunk in enumerate(pd.read_csv(input_file_path, chunksize=chunk_size)):
output_file_path = f'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/qd2_{i+1}.csv'
chunk.to_csv(output_file_path, index=False)
步骤六:sql语法导入
以下为sql所有语法:
select * from qd1
SET SQL_SAFE_UPDATES = 0; ##解除更新和删除表内容禁制:
delete from qd1 ##清空表内容
select * from qd1 ##再检查一下表内数据是否清空
show variables like '%secure%'; ##用于查看本地文件导入权限是否开启
set global local_infile =1; ##打开权限
show global variables like '%secure_file_priv%';##找到权限的目录
use shopingmall; ##先运行一下数据库
LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/qd2_1.csv'
INTO TABLE qd1
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;