【问题标题】:Moving html data from mysql (wordpress) to sqlserver将 html 数据从 mysql (wordpress) 移动到 sqlserver
【发布时间】:2015-10-28 03:29:06
【问题描述】:

我正在将一个网站升级到在 wordpress 中至少有 100K 帖子的 asp.net。我找不到任何相关的搬家话题,所以我想分享一下我的经验。

大数据不是问题,然而,一些 wordpress 表格的 html 数据包含引号(单引号和双引号)、&nbsp's、制表符等。我尝试了很多导出方法,但是导出到 SQL 文件对我不起作用(至少,我无法使用它,它会导致很多麻烦)。

【问题讨论】:

  • 您在导出到 SQL 文件时遇到了哪些具体问题?
  • 当初为什么选择Wurdpress?
  • 我不是项目的所有者。它是从 wordpress 开始的。作为网络开发人员,我只是升级到更新的平台。
  • 对于问题:导出的 SQL 文件中的引号导致无法导入 SQL Server。替换的引号不匹配。它并不像你想象的那么简单。 Base64 图像也存在,依此类推。

标签: php mysql asp.net sql-server wordpress


【解决方案1】:

移动数据的最佳方式是将数据导出为 CSV 文件,分别为每个表导出。导出时,您必须:

  1. 自定义导出
  2. “列分隔符”和“列括起来”的不同且唯一的字符串(我分别使用了############ 和@@@@@@@)
  3. 选中“删除列中的回车符/换行符”
  4. 选中“将列名放在第一行”
  5. 下载导出文件

下载后会进行替换:

  1. 带空格的制表符 \t -> 空格
  2. 双引号转单“ -> '
  3. ###### -> \t
  4. @@@@@@@ -> "

最后,需要进行编码转换。 myadmin 输出是 ANSI 文件,它已损坏。 Sql server 可能无法处理它。要解决它,首先转换为 UTF-8 并再次转换为 ANSI(在 notepad++ 中,它在“编码”菜单中有选项)。

在导入 SQL Server 时,您必须选择文本文件作为源。选择相关的 csv 文件并在导入时注意列长度。 Sql server 将使您的所有列 varchar(50) 默认。导出的数据将具有更大的列。您必须在导入向导中手动调整它们。使用 DT_Text(不是 DT_NTEXT)作为字符串值。

我知道这个过程会导致一些数据丢失(制表符和双引号)但是,这是 wordpress 的 html 编辑器的错。 出于这些目的,HTML 数据应以编码形式存储在数据库中...

【讨论】:

    【解决方案2】:

    使用在目标系统上创建的链接服务器;这样,导入过程可以由 SQL-Server 驱动,并有望生成可供使用的结果,而无需太多步骤和检查。

    有很多关于从 SQL-Server 与 MySQL 交互的 SO 帖子:
    Can't create linked server - sql server and mysql
    SELECT * FROM Linked MySQL server
    Do I have to use OpenQuery to query a MySQL Linked Server from SQL Server?

    【讨论】:

      猜你喜欢
      • 2016-11-23
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 2012-02-11
      相关资源
      最近更新 更多