利用bulk insert指令来将csv文件导入SQL Server
2015-08-13 23:55
671 查看
之前在网上下了许多csv格式的数据。通过数据库导入感觉有点麻烦,于是打算写个脚本来执行。通过搜索,发现用bulk insert指令可以完成这一功能。然而在执行的过程中,MSSQL总是报错称
经过多次摸索总算解决了这一问题。
在导入之前,首先需要在自己的数据库下建立一个表,用以存放导入后的数据。在建立表的时候,就需要规定好各列的格式和名字。
我因为在导入的时候碰到了波折,为了控制变量查错,所以把格式统一设置为了varchar(100),到时候再改。
如果不想重新建立表,也可以通过
其中varchar(max)为想要改的格式。
在建立了表格以后,就需要执行bulk insert指令了。
关于bulk insert指令详细的用法,可以参照/article/8412768.html这篇文章的内容。
我的csv文件中,
列之间用’,’分割,所以FIELDTERMINATOR属性设为’,’ ;
数据从第二行开始,所以FIRSTROW=2 ;
关于行分隔符,也就是ROWTERMINATOR的值,我看到的所有教程里面都是填’\n’,然而实际使用的时候不知道是什么情况,总是报错,也就是之前提到过的错误。经过多方查找,将行分隔符改为‘0x0a’以后,可以解决这个问题。
所以,此处的sql插入指令如下
执行结果如下
可见指令有效
大容量加载失败。数据文件中第 1 行的第 46 列太长。请验证是否正确指定了字段终止符和行终止符。 无法从链接服务器 "(null)" 的 OLE DB 访问接口 "BULK" 获取所需的接口("IID_IColumnsInfo")。
经过多次摸索总算解决了这一问题。
在导入之前,首先需要在自己的数据库下建立一个表,用以存放导入后的数据。在建立表的时候,就需要规定好各列的格式和名字。
create table table_name( colname_1 VARCHAR(100), colname_2 VARCHAR(100), colname_3 VARCHAR(100), ... ... colname_n VARCHAR(100), ) ;
我因为在导入的时候碰到了波折,为了控制变量查错,所以把格式统一设置为了varchar(100),到时候再改。
如果不想重新建立表,也可以通过
alter table table_name alter column column_name varchar(max)
其中varchar(max)为想要改的格式。
在建立了表格以后,就需要执行bulk insert指令了。
关于bulk insert指令详细的用法,可以参照/article/8412768.html这篇文章的内容。
我的csv文件中,
列之间用’,’分割,所以FIELDTERMINATOR属性设为’,’ ;
数据从第二行开始,所以FIRSTROW=2 ;
关于行分隔符,也就是ROWTERMINATOR的值,我看到的所有教程里面都是填’\n’,然而实际使用的时候不知道是什么情况,总是报错,也就是之前提到过的错误。经过多方查找,将行分隔符改为‘0x0a’以后,可以解决这个问题。
所以,此处的sql插入指令如下
bulk insert database_name.datatable_name from 'file_path' with( FIELDTERMINATOR=',', ROWTERMINATOR='0x0a' , FIRSTROW=2 ) ;
执行结果如下
可见指令有效
相关文章推荐
- 使用PLSQL Developer和DbVisualizer查询oracle数据库时,出现查询数据中文乱码情况
- Berkeley DB数据库
- Mysql 64位安装
- mysql数据库只能本地连接,其他电脑不能连接
- Redis对于key的操作命令
- Spring Data MongoDB 五:进阶文档查询(分页、Morphia)(二)
- mysql中innodb和myisam的区别
- 2、Redis集群的调用
- mysql文档摘要续2
- 无法远程访问虚拟机中的EM (Oracle Enterprise Manager)
- 21.2015.08.13第二十三课ado.net3(增删改查、get传值、post传值、SQL防注入、调存储过程、SQLHELPER)
- ubuntu安装redis
- Oracle 学习之RAC(七) 集群启动解析
- Redis Windows下的环境搭建
- 导入SQL文件,结果中文的没有导入进去
- SQL like模糊查询
- 【MySql】使用记录<七>
- linux 之静默安装oracle
- sql中连接的几种方式
- MySQL-- 每半月一个分区,自动维护