大容量csv快速内导入sqlserver的解决方法(推荐)

在SQL Server中,大容量数据导入是一个常见的任务,特别是对于CSV文件这种常见的数据交换格式。在本案例中,我们需要在导入CSV数据的同时为每一行添加一个新的`datetime`列。面对大量数据(例如200万行)的快速导入,通常会使用`BULK INSERT`或BCP(Bulk Copy Program)命令。然而,处理大容量CSV文件时可能会遇到各种问题,如错误4866和7399,这些错误通常与字段终止符、行终止符设置不正确有关。 `BULK INSERT`是一个高效的工具,用于将大量数据一次性插入到SQL Server表中。在这个例子中,尝试使用以下`BULK INSERT`语句: ```sql BULK INSERT test07232 FROM 'D:\2017-7-22.csv' WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n') ``` 这里,`FIELDTERMINATOR`定义了字段之间的分隔符(默认是逗号),`ROWTERMINATOR`定义了行的结束符(默认是`\r\n`,即CRLF)。然而,当CSV文件的行终止符仅为LF(Linux/Unix风格)而非CRLF(Windows风格)时,上述语句就会失败。 解决这个问题的方法是明确指定行终止符为LF,使用其十六进制值`0x0A`: ```sql BULK INSERT test07232 FROM 'D:\2017-7-22.csv' WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '0x0A') ``` 这样,`BULK INSERT`就能正确解析文件并导入数据。 接下来,为了在导入过程中添加新的`datetime`列,可以将数据先导入一个临时表,然后从临时表插入到目标表中,同时插入当前日期: ```sql SELECT *, GETDATE() AS Date INTO ttt FROM test07232 ``` 这种方法确保了在导入过程中添加了新的列,且整个操作速度快,尤其当目标表和临时表都在SSD上时,性能更佳。 总结来说,解决大容量CSV文件导入SQL Server的问题需要对数据格式有深入理解,包括字段和行的终止符。在处理非标准格式的CSV文件时,需要灵活调整`BULK INSERT`的参数。同时,利用临时表和现有系统函数(如`GETDATE()`)可以方便地实现数据转换和附加操作。在实际应用中,应确保对数据库性能和数据完整性的全面考虑,以优化导入过程。对于不能修改源数据的情况,上述方法提供了有效解决方案。























- m0_607330712021-08-20消息 4864,级别 16,状态 1,第 21 行 第 1 行、第 8 列(MeasureValue)出现大容量加载数据转换错误(类型不匹配或者字符对于指定的代码页无效)。 消息 4832,级别 16,状态 1,第 21 行 大容量加载: 在数据文件中遇到意外的文件结尾。 消息 7399,级别 16,状态 1,第 21 行 链接服务器 "(null)" 的 OLE DB 访问接口 "BULK" 报错。提供程序未给出有关错误的任何信息。 消息 7330,级别 16,状态 2,第 21 行 无法从链接服务器 "(null)" 的 OLE DB 访问接口"BULK"提取行。 不行呀什么情况

- 粉丝: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- Java基础入门课后习题与答案.doc
- 基于单片机的数字电压表设计(1).doc
- RAPTOR流程图编程演示文稿(1).ppt
- 电脑网络公司商业计划书.doc
- 军用仿真(软件)行业市场分析报告2024年(1).pptx
- “村村通”综合远程网络监控及数据服务系统.docx
- MATLAB潮流计算仿真设计.doc
- 常用数学软件及其应用.ppt
- 学生成绩管理系统c语言代码(2).doc
- 2023年linux题库选择及答案.doc
- 关于应用XBRL推进会计信息化建设研究(1).docx
- 2211循环结构程序设计-循环结构程序设计-实验项目.docx
- Photoshop的读书心得.doc
- 2023年自动化检测设备行业分析报告及未来五至十年行业发展报告.docx
- 大数据时代高职大学英语专业建设探析优秀科研论文报告.docx
- 【推荐下载】抢占工业物联网市场-Wind-River锁定四大领域(1).pdf


