1. 使用SQL*Loader工具导入CSV文件:先准备控制文件.ctl,指定字段分隔符和数据文件路径,然后执行sqlldr命令,比如sqlldr userid=用户名/密码@数据库 control=控制文件.ctl log=日志文件.log,能批量处理大文件超快。
方法一:SQL*Loader高效导入
网友分享:CSV文件导入Oracle最简单就是SQL*Loader,写个.ctl文件,里面INFILE '数据.csv',然后BEGIN DATA下面直接数据,字段用逗号分隔,运行sqlldr就搞定,几百万行几分钟完事。
方法二:MySQL LOAD DATA INFILE
LOAD DATA INFILE '文件路径' INTO TABLE 表名 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS; 这条命令直接从服务器本地文件导入,速度飞起,比INSERT快几十倍,记得给文件权限。
方法三:Python pandas to_sql
import pandas as pd; df = pd.read_csv('文件.csv'); from sqlalchemy import create_engine; engine = create_engine('mysql://user:pass@host/db'); df.to_sql('表名', engine, if_exists='append', index=False); 超级方便,处理各种格式文件,自动创建表结构。
方法四:PostgreSQL COPY命令
\copy 表名 FROM '文件.csv' DELIMITER ',' CSV HEADER; 在psql里直接运行,速度无敌,支持大文件,远超pgAdmin的导入工具。
方法五:ETL工具如Talend或Kettle
下载Kettle,拖拽CSV输入组件连数据库输出,配置字段映射,一键运行,适合复杂转换,网友说免费又强大。
FAQ
Q: CSV有中文乱码怎么办?
A: 指定编码如UTF-8,在LOAD DATA里加CHARACTER SET utf8,或者pandas读时encoding='utf-8'。
Q: 文件太大导入卡住?
A: 分批导入,用LIMIT或分拆文件;或者用bulk insert工具如SQL*Loader。
Q: Excel文件怎么导?
A: 先存CSV,再用上面方法;或pandas直接pd.read_excel。
Q: 权限不够LOAD DATA报错?
A: 给mysql用户FILE权限,GRANT FILE ON *.* TO 'user'@'localhost';