跨数据库将sqlserver库中的表数据转到mysql数据库中

来源:互联网 发布:末日人工智能攻略 编辑:程序博客网 时间:2024/04/29 16:15


最近平台数据整合,需要把其他平台上的sqlserver数据转移到mysql

跨平台数据好像并没有什么好办法,只能通过通用的文件格式转


同时分享一份期间看到的很好的资料,虽然和本文无关,但是内容值得学习

千万级别mysql合并表快速去重

http://blog.sina.com.cn/s/blog_5755b8ed0101err7.html

该文为本库中导合并数据


数据库:sqlserver2008,mysql 6.5

工具:sqlserver2008,navicate  for mysql 11(必须是新版本的,11之前的版本都没有csv格式导入)

中间格式:csv文件

两个表的字段对应结构如下:

sqlserver表字段

(表名: Truck)

 

mysql表字段

(表名: Truck)

 

TruckId

 

id

 

TruckNo

 

no

车牌号

StopArea

 

position

常驻地

StructType

 

bodyType

车辆类型

ConnectType

 

boxType

箱体结构

 

 

weight

载重

 

 

volume

体积

Length

车长

length

车长

Width

车宽

width

车宽

Height

车高

height

车高

 

 

driverId

司机ID

 

 

 

platform

数据来源头,佳捷

TruckState

 

state

车辆状态

UseCount

 

useCount

承运次数


1,在sqlserver 上将数据查询出来转存为csv格式,对于列名不同的要取别名为mysql的列名格式,同时对不符合要求的数据进行特别处理

/****** Script for SelectTopNRows command from SSMS  ******/
SELECT 
TruckId AS id ,
TruckNo AS no ,
StopArea AS position ,
StructType AS bodyType ,
ConnectType ASboxType ,
0 AS weight,
0 AS volume,
Length AS length ,
Width AS width ,
Height AS height ,
0 driverId ,
0 platform ,
TruckState state,
CASE WHEN UseCount IS NOT NULL THEN UseCount ELSE 0 END useCount
     
  FROM [Business].[dbo].[Truck]  


2,将查询的结果导出为csv格式文件,这里为truck.csv

3,在navicate for mysql 中点击备份的truck_copy表右键选择导入,导入格式选择csv,文件路径选择刚刚保存的文件地址

4,如果不成功重复步骤1直到处理的数据格式符合要求全部导入位置

5,去重将临时表truck_copy中的数据存入正式表中truck,需要sql去重插入即可

INSERT INTO truck 
 (no,
position,
bodyType,
boxType,
weight,
volume,
length,
width,
height,
driverId,
platform,
state,
useCount,
createDt
)
Select 
c.no,
c.position,
c.bodyType,
c.boxType,
c.weight,
c.volume,
c.length,
c.width,
c.height,
c.driverId,
'历史数据',
c.state,
c.useCount,
'2014-01-01 01:01:01'
 From truck_copy    c   WHERE  c.no not in (
SELECT no FROM  truck
)







0 0
原创粉丝点击