C# 在Mysql数据库中导入Microsoft Access数据库

C# 在Mysql数据库中导入Microsoft Access数据库,c#,php,mysql,ms-access,C#,Php,Mysql,Ms Access,我有一个特殊的情况,我的客户需要(定期)将ms access数据库导入他的mysql网站数据库(所以它是一个远程数据库) 因为托管计划是共享托管(而不是vps),所以唯一的方法是通过PHP通过SQL查询,因为我没有ODBC对托管的支持 我目前的想法是这样的(很明显,客户端有一个MS Windows O.S.): 创建一个小型C#应用程序,将MS Access数据库转换为写在文件上的大型SQL查询 然后,应用程序将使用FTP信息将文件发送到网站上的指定目录 然后,PHP脚本将定期运行(如每30分

我有一个特殊的情况,我的客户需要(定期)将ms access数据库导入他的mysql网站数据库(所以它是一个远程数据库)

因为托管计划是共享托管(而不是vps),所以唯一的方法是通过PHP通过SQL查询,因为我没有ODBC对托管的支持

我目前的想法是这样的(很明显,客户端有一个MS Windows O.S.):

  • 创建一个小型C#应用程序,将MS Access数据库转换为写在文件上的大型SQL查询
  • 然后,应用程序将使用FTP信息将文件发送到网站上的指定目录
  • 然后,PHP脚本将定期运行(如每30分钟一次),并检查文件是否存在,最终将其导入数据库
我知道这不是最好的方法,所以我提出一个问题,为这个问题创建一个不同的解决方法。客户已经表示他希望继续使用他的ms access数据库


我遇到的最大问题是脚本只能持续30秒,这显然是导入数据的问题。

要绕过30秒的限制,请反复调用脚本,并跟踪进度。这里有一个粗略的想法:

if(!file_exists('upload.sql')) exit();

$max = 2000; // the maximum number you want to execute.

if(file_exists('progress.txt')) {
    $progress = file_get_contents('progress.txt');
} else {
    $progress = 0;
}

// load the file into an array, expecting one query per line
$file = file('upload.sql');

foreach($file as $current => $query) {
    if($current < $progress) continue; // skip the ones we've done
    if($current - $progress >= $max) break; // stop before we hit the max
    mysql_query($query);
}

// did we finish the file?
if($current == count($file) - 1) {
    unlink('progress.txt');
    unlink('upload.sql');
} else {
    file_put_contents('progress.txt', $current);
}
如果(!file_存在('upload.sql'))退出();
$max=2000;//要执行的最大数目。
如果(文件_存在('progress.txt')){
$progress=file_get_contents('progress.txt');
}否则{
$progress=0;
}
//将文件加载到数组中,每行需要一个查询
$file=file('upload.sql');
foreach($file as$current=>$query){
如果($current<$progress)继续;//跳过我们已经完成的操作
如果($current-$progress>=$max)中断;//在达到最大值之前停止
mysql\u查询($query);
}
//我们完成文件了吗?
如果($current==计数($file)-1){
取消链接('progress.txt');
取消链接('upload.sql');
}否则{
文件内容('progress.txt',$current);
}

我以前使用过类似的过程。使用脚本将Access数据库导出到有效的MySQL导入SQL文件,并上载到FTP站点,远程服务器上的另一个脚本每晚都在该站点上运行,以查看该文件是否存在。如果是这样,它将导入SQL文件(在一些安全检查之后)您如何处理30秒脚本执行限制?我不知道数据库在安全模式下运行会有多大,我已经知道了这个函数:(是的,这和我想的方法是一样的,但是我喜欢你在代码中处理它的方式(特别是$current<$progress),我会在几天后告诉你结果。非常感谢