我正在从服务器 A 上的数据库中选择数据,将输出转储到本地文件中,然后在本地数据库上执行 LOAD DATA INFILE。bash 命令看起来像这样:
mysql -e "SELECT * FROM items WHERE created_at > '2011-05-01';" > items
有人告诉我这是将数据从外部服务器移动到本地数据库时的正确方法。我想我通常会选择使用 mysqldump,但我不想大惊小怪地将转储的文件从服务器卷曲到我的本地机器上。
使用上面的命令行代码转储到 items 文件的数据包含很多 NULL。那些 NULL 在由 LOAD DATA INFILE 命令读取时在本地运行,最终会将一堆“NULL”字符串加载到我的表中。我希望那些被正确翻译成 NULL 而不必进入项目文件并用“\ N”查找/替换“NULL”
我需要一种方法来做两件事之一:
1) 从 mysql 表中选择数据时,我希望输出将 NULLS 转义为由 LOAD DATA INFILE 读取的标准 \N 字符串。为了简洁和易于维护,我想避免下面的代码类型。
SELECT IFNULL(x, '\N' ) AS x, IFNULL(y, '\N') AS y ...
2) 运行 LOAD DATA INFILE 时,我希望它将字符串 NULL 视为 null。
(SELECT * FROM items WHERE created_at > '2011-01-01')
非常感谢任何想法或替代方法。
非常感谢,乍得
您是否查看过SELECT INTO OUTFILE语法?
这是关于 NULL 字符串问题的引用:
因此,请确保您指定一个
FIELDS ESCAPED BY
子句以将 NULL 写为 \N希望这可以帮助