用php把access数据库导入到mysql

<?php
header("content-Type: text/html; charset=utf-8");
///
///把access数据库转换成mysql的SQL语句
///请在命令行运行
///

//连接access数据库
$db = odbc_connect("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=". realpath("./test.mdb"), "", "");

//生成sql文件
$file = "test.sql";
save_file($file, "SET NAMES utf8;\n\n");
$tables = get_tables($db);
for($i=0; $i<count($tables); $i++){
	$table = $tables[$i];
	echo("$i\t$table\n");
	$res = odbc_exec($db, $sql = "SELECT * FROM `$table`");

	$fields = get_table_fields($res);
	$structure_sql = get_table_structure($table, $fields)."\n\n";
	$data_sql = iconv("GBK", "UTF-8", get_table_data($res, $table)."\n\n\n");

	save_file($file, $structure_sql);
	save_file($file, $data_sql);
}
echo("ok");

/////////////////////////////////函数//////////////////////////////////////
//保存文件
function save_file($file, $data){
	$fp = fopen($file, ‘a+‘);
	fwrite($fp, $data);
	fclose($fp);
}

//获取数据表
function get_tables($db){
	$res = odbc_tables($db);
	$tables = array();
	while (odbc_fetch_row($res)){
		if(odbc_result($res, "TABLE_TYPE")=="TABLE")
			$tables[] = odbc_result($res, "TABLE_NAME");
	}
	return $tables;
}
//获取表字段
function get_table_fields($res){
	$fields = array();
	$num_fields = odbc_num_fields($res);
	for($i=1; $i<=$num_fields; $i++){
		$item = array();
		$item[‘name‘] = odbc_field_name($res, $i);
		$item[‘len‘] = odbc_field_len($res, $i);
		$item[‘type‘] = odbc_field_type($res, $i);
		$fields[] = $item;
	}
	return $fields;
}
//生成建表SQL
function get_table_structure($table, $fields){
	$primary_key = ‘‘;
	$sql = array();
	foreach($fields as $item){
		if($item[‘type‘]==‘COUNTER‘){
			$sql[] = "\t`".$item[‘name‘]."` int(".$item[‘len‘].") NOT NULL AUTO_INCREMENT";
			$primary_key = $item[‘name‘];
		}else if($item[‘type‘]==‘VARCHAR‘){
			$sql[] = "\t`".$item[‘name‘]."` varchar(".$item[‘len‘].") NOT NULL DEFAULT ‘‘";
		}else if($item[‘type‘]==‘LONGCHAR‘){
			$sql[] = "\t`".$item[‘name‘]."` text NOT NULL";
		}else if($item[‘type‘]==‘INTEGER‘){
			$sql[] = "\t`".$item[‘name‘]."` int(".$item[‘len‘].") NOT NULL DEFAULT ‘0‘";
		}else if($item[‘type‘]==‘SMALLINT‘){
			$sql[] = "\t`".$item[‘name‘]."` smallint(".$item[‘len‘].") NOT NULL DEFAULT ‘0‘";
		}else if($item[‘type‘]==‘REAL‘){
			$sql[] = "\t`".$item[‘name‘]."` tinyint(1) NOT NULL DEFAULT ‘0‘";
		}else if($item[‘type‘]==‘DATETIME‘){
			$sql[] = "\t`".$item[‘name‘]."` datetime NOT NULL";
		}else if($item[‘type‘]==‘CURRENCY‘){
			$sql[] = "\t`".$item[‘name‘]."` float NOT NULL DEFAULT ‘0‘";
		}else{
			$sql[] = "\t`".$item[‘name‘]."` varchar(255) NOT NULL DEFAULT ‘‘";
		}
	}
	return "CREATE TABLE IF NOT EXISTS `$table` (\n".implode(",\n", $sql).($primary_key?",\n\tPRIMARY KEY (`".$primary_key."`)\n":"\n").") ENGINE=MyISAM DEFAULT CHARSET=utf8 ;";
}
//获取表数据
function get_table_data($res, $table){
	$row_sql = array();
	while( $row = odbc_fetch_array($res) ) {
		$row_sql[] = get_row_sql($table, $row);
	}
	return implode("\n", $row_sql);
}
//生成插入SQL
function get_row_sql($table, $row){
	$keys = array_keys($row);
	$values = array_values($row);
	for($i=0;$i<count($values);$i++){
		$values[$i] = addslashes($values[$i]);
	}
	return "INSERT INTO ".$table."(`".implode("`,`", $keys)."`) VALUES(‘".implode("‘,‘",$values)."‘);";
}
?>

  

用php把access数据库导入到mysql

时间: 2024-10-14 06:20:34

用php把access数据库导入到mysql的相关文章

Mysql:数据库导入导出

Mysql:数据库导入导出 Mysql数据库导出 mysqldump -h IP -u 用户名 -p 数据库名 > 导出的文件名 1.mysqldump是在cmd下的命令,需要在linux命令行下执行命令.2.-p后面指定的是数据库的名字,比不是密码. 实际演示: [root@VM_0_16_centos ~]# mysqldump -u root -p test > test.sql Enter password: [root@VM_0_16_centos ~]# ls dead.lette

Access数据库的迁移问题探究

背景:因为业务信息系统软件之前设计的为Access数据库架构,经过一段时间的运营管理,发现Access数据库越来越不能支撑业务系统的运行管理.因此,考虑更换数据库. 抛弃Access数据库,首选MySQL数据库.MySQL虽体积小,但是功能够用,存储速度快,基本能满足升级改造的要求.从Access数据库迁移到MySQL数据库,通常要做哪些事. (1)迁移Access表到MySQL数据库中 对照Access数据库表,在MySQL数据库中建立同样一张表.之后,将Access数据表内容迁移到MySQL

access数据库注入

access数据库渐渐的被很多人遗忘. 而大部分安全人员也对access数据库也不感冒. 最近在西晋学院玩了玩它的web题目,没想到在西晋上面看到不少的asp的题.其中不乏有数据库注入的. access数据库并不像mysql那样方便,可以拥有information_schema这个包含数据各种数据库,表以及字段信息的"新华字典". 虽然有一个msysobjects,但是大多情况下即使管理员也没办法读取其里的信息,因为读取它需要设置权限. 下面从西晋学院里面的access盲注来说一下.

【转】C# Excel 导入到 Access数据库表(winForm版)

/// <summary> /// 获取Excel文件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button1_Click(object sender, EventArgs e) { OpenFileDialog dlg = new OpenFileDia

将Access导入到MySql

Microsoft Office 2010 MySql 5.5.27.2 1.打开Access,选择将要导出的表.选择“外部数据” - > 其他 -> ODBC 数据源 . 2.弹出导出对话框,可修改表的名称(默认即可). 3.点击导出对话框中的“确定”按钮,弹出选择数据源对话框.可在搜索范围处选择已有数据源,若没有,则点击“新建”按钮. 4.点击“新建”按钮,弹出创建新数据源,在列出的名称中选中“MySQL ODBC 5.1 Driver”(将鼠标拉到最后),点击“下一步”. 5.点击“下一

C#---数据库访问通用类、Access数据库操作类、mysql类 .[转]

原文链接 //C# 数据库访问通用类 (ADO.NET)using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Data.SqlClient;using System.Configuration; namespace XXX{    /// <summary>    /// 针对SQL Server数据库操作的通用类           /// </sum

功能齐全、效率一流的免费开源数据库导入导出工具(c#开发,支持SQL server、SQLite、ACCESS三种数据库),每月借此处理数据5G以上

软件名:DataPie 功能:支持SQL server.SQLite.ACCESS数据库的导入.导出.存储过程调用,支持EXCEL2007.EXCEL2003.ACCESS2007. CSV文件导入数据库,支持EXCEL.CSV.ZIP.ACCESS文件方式导出,支持数据拆分导出及自定义SQL查询与导出. 开发背景:作者从事财务管理工作,主要是出具集团的内部财务报表,随着公司精细化管理的需求,管理报表的数据量急速增长, 依赖EXCEL加工处理数据已经变得极为困难,因此团队全面转向关系数据库进行数

mysql数据库导入导出及修改数据库名命令

概述 mysql 数据库导入导出,有两种方式 1)先导出SQL脚本,再导入(导入导出又分两种:1. 命令. 2. 工具.这里我们只介绍命令). 2)直接拷贝数据库文件(此方法不推荐). 一.mysql数据库导入 1.  已有数据库,可以直接用mysql命令 命令格式 mysql -u用户名 -p密码 数据库名 <  sql文件路径 示例:mysql -uroot -p12345678  test <  /root/test.sql 2.  创建新数据导入 mysql -uroot -p1234

linux系统上Mysql数据库导入导出操作

需求:把MySQL数据库目录中的dz数据库备份到/home/dz_bak.sql ,然后再新建一个数据库dzbak,最后把/home/dz_bak.sql 导入到数据库dzbak中.操作如下:以下操作均在终端命令行下进行 1.mysqldump -u root -p dz > /home/dz_bak.sql        #导出数据库     123456     #输入数据库密码     扩展:     mysqldump -u root -p dz pre_portal_comment >