【问题标题】:Inserting millions of records from local to godaddy hosting将数百万条记录从本地插入到 Godaddy 托管
【发布时间】:2016-01-28 06:16:02
【问题描述】:

我正在尝试将大约 800 万条记录从 access 数据库插入到 GoDaddy 中的 mysql 数据库中。

我构建了一个桌面 Java 应用程序来管理每次分块 5000 条记录的插入。我使用 Laravel 5.1 来管理服务器中的插入。因此,基本上,java 应用程序向 laravel php 路由发送请求,然后它负责直接插入我的 MySQL 数据库。

编辑:人们会将数据直接插入到 Access 中,所以我必须观察 MDB 文件的变化。这就是为什么我不能只从 Access 导出并导入 MySQL。

第一部分记录插入成功,但是当我发送另一个请求时,我得到了这个错误:

2015-10-28 10:43:57.844 java[3475:280209] Communications error: <OS_xpc_error: <error: 0x7fff7298bb90> { count = 1, contents =
    "XPCErrorDescription" => <string: 0x7fff7298bf40> { length = 22, contents = "Connection interrupted" }
}>
Got xpc error message: Connection interrupted
org.apache.http.NoHttpResponseException: api.mydomain.com:80 failed to respond

【问题讨论】:

  • 请求多长时间才会出错?如果请求超时,可能会发生这种情况。
  • 您对数据库所在的服务器有 ssh 访问权限吗?
  • 为什么不为每 2000 条记录生成一条插入语句并一次运行一条呢?插入数据库将更加有效。使用 laravel 插入记录将花费更多的资源和时间......最坏的情况是,如果您没有直接访问数据库的权限,请让您的 php 执行语句 - 但不要将内容加载到 Eloquent 模型中并插入他们分别。
  • 如果我是你,我会一次只插入其中的几个,然后重新打开连接并编写另一包。 800 万条记录对我来说似乎太多了。
  • 撇开技术细节不谈,我会从你发布的错误日志中隐藏你的红色、甜蜜和粘人的雇主......

标签: java php mysql ms-access laravel-5


【解决方案1】:

确保您已安装 MySQL odbc 连接器: https://dev.mysql.com/downloads/connector/odbc/

为您的 MySQL 服务器创建 DNS(您可以通过 odbc 管理器或仅使用记事本执行此操作) 您的 DNS 文件将如下所示:

[ODBC]
DRIVER=MySQL ODBC 5.3 Unicode Driver ' check what driver is installed
UID=username to the server
PORT=3306
PWD= password to the server
DATABASE=dbname
SERVER=serverip/name

将 DNS 文件保存在某处,我们称之为 GoDaddy_MySQL.dns

打开你的 ACCESS 数据库。

  1. 外部数据
  2. ODBC
  3. 选择“通过创建链接到数据源”
  4. 选择 godaddy_mysql.dns 文件
  5. 如果您的所有连接详细信息都正确,Access 将向您显示要导入的表和视图。点击您要从 Access 数据库上传数据的表。
  6. 现在您已经在 MS Access 数据库中链接了实际的 MySQL 表。

您只需通过以下方式将数据从本地表上传到链接表:

您可以使用 TOP 关键字对您的上传进行分块。如果您添加 where 条件(尚未在链接表上),您可以随时将新记录自动上传到您的 MySQL 服务器。

如果您现在并且仍将使用您的 Access 数据库,您还可以从本地表切换到链接表,这样所有新条目都会自动上传到您的 Godaddy 服务器。

Pseudo: 

insert into linked_table select top 5000 from your local table where local_records_are not in linked table.

【讨论】:

  • 感谢 Krish KM!你真棒!
  • 只是肯定...如果我启用此选项,当我关闭 Access 并插入数据时(例如通过另一个程序),它仍然有效吗?我昨天测试了只是插入和连接。 PS:对不起!我不太了解 Access..
  • 没有得到您的问题:您的 MS Access 中的 Godaddy MySQL 表是您 Godaddy 服务器的镜像。所以是的,当其他人插入 Godaddy 时,您将在您的 ms 访问中看到所有 Godaddy 记录。反之亦然。
  • 很好!!明白了!! Tk你! :)
【解决方案2】:

尝试在 GoDaddy 服务器上运行的交错 MySQL 导入器。喜欢 Bigdump:http://www.ozerov.de/bigdump/

Export from Access,导入 MySQL。它直接在godaddy服务器上运行,因此数据已经在服务器上,然后就可以读取了。我已经在 GoDaddy 上多次使用它来进行大型导入。

干杯!

【讨论】:

  • Mikel,我不能这样做,因为人们会先在 access 中插入数据,所以我必须观察 Access 文件是否有变化。
  • 啊,这是一个持续同步?不是转移?
猜你喜欢
  • 2023-01-31
  • 1970-01-01
  • 2012-05-30
  • 2013-11-10
  • 2013-05-02
  • 1970-01-01
  • 2012-05-16
  • 1970-01-01
  • 2015-09-04
相关资源
最近更新 更多