MySQL(csv,text)导入mssql是非常的简单了但是在导入过程中会碰到text字段问题了,下面我们就来看一篇关于MySQL(csv,text)导入mssql使用方法吧,具体的操作细节如下所示。
分两步处理,第一步是将csv导入到mysql。没有使用mssql自带客户端的导入功能,因为这个功能太坑,尝试N多种方法仍然是报错,因此选择先转换成mysql做中间步骤。
csv/text导入MySQL
一批很大的csv数据(其实并非csv,而是制表符分隔字段),要导入到mssql数据库里。
首先在cygwin下使用awk对数据做预处理,只筛选出字符数正确的行。并且在首行加入列名,以便导入工具自动做列对应。
然后计算各字段最大长度;因为字段数太多(63个),所以计算一下,用于构造create table语句。对于最大长度在255以下的字段使用varchar(n)型,255以上使用longtext类型。
#参考下面语句
$ awk -F "\t" 'NF==63 {print $0}' all.csv >all_63f.txt
$ head -1 origin_text_file.txt >h.txt
$ dos2unix h.txt #注意最好不要带BOM,否则自行另存一下,避免麻烦
$ cat h.txt all_63f.txt >a63_with_head.txt
#最大计算字符长度,本身并不复杂,只是写在一行里,阅读不太方便
$ awk -F "\t" 'BEGIN{for(i=1;i<=63;i ){xcount[i]=0}} {for(i=1;i<=63;i ){if(xcount[i]
MySQL导入mssql
以下win2008 x64下的mssql 2012为例。
安装mysql的.net驱动 http://dev.mysql.com/downloads/connector/
create table,建表,与mysql结构一致。
使用mssql自带导入功能导入数据,导入数据源选择 .Net Framework Data Provider for MySQL,填写必要的主机名、登录名、口令,如下
不能选择源数据表,必须写select 语句,如: select f1,f2,f3… from `db`.`table` where 1
后面应该没有什么难度了