mysql - MYSQL从文本文件输入加载空值
问题描述
我正在制作一个玩具应用程序,目的是了解 mysql 数据库,我试图将Magic The Gathering Cards 的属性存储为以下格式的记录:
mtgo_id | 卡名 | mana_cost | 厘米 | 卡类型 | oracle_text | card_power | card_toughness | 稀有
我无法使用LOAD DATA LOCAL INFILE
. 我已经看到有关堆栈溢出的其他解决方案建议使用SET
哪个工作,但是我想知道在解释有关转义字符的文档时我哪里出错了,因为我将我的空字段设置为 '\N',就像我的文本中的指示一样文件。
以下是文本文件中的示例记录:
82955 Disenchant {1}{W} 2.0 Instant Destroy target artifact or enchantment. \N \N common
加载数据查询:
LOAD DATA LOCAL INFILE "/path/ZNRrecords.txt" INTO TABLE znrTake1 FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\r' STARTING BY ''
解决方案
来自官方文档
反斜杠是 SQL 语句中字符串中的 MySQL 转义字符。
因此,在您从中加载的文件中,而不是只是为了将 Null 解析\N
为.\\N
\N
你也可以使用这个
LOAD DATA LOCAL INFILE "/path/ZNRrecords.txt"
INTO TABLE znrTake1
FIELDS TERMINATED BY '\t'
ENCLOSED BY ''
ESCAPED BY '\\'
LINES TERMINATED BY '\r'
STARTING BY ''
(mtgo_id, card_name, mana_cost, cmc, card_type, oracle_text, @vcard_power, @vcard_toughness, rarity)
SET
card_power = NULLIF(@vcard_power,'\N'),
card_toughness = NULLIF(@vcard_toughness,'\N');
推荐阅读
- c++ - 将 QuaZip 添加到项目中
- powershell - 显示共享上每个文件夹的已用空间(无 WMI 等)
- web-component - 是他们在 Web 组件中的任何错误边界吗
- winforms - Winforms:如何正确渲染 Fontawesome 5.10 字形?
- javascript - 浏览器原生滚动功能:如何检查兼容性
- javascript - 在 console.log 工作时返回未定义。为什么
- powerbi - 日期列中的月份名称
- java - 映射时处理重复键
- sap-cloud-sdk - CAP - 网关超时 - 如何增加传入请求的超时时间
- php - 如何在 codeigniter 上更新或插入新数据