- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我在使用 MySQL 的 SELECT ... OUTFILE 时遇到了一些困难,结果集包括空值和需要双引号转义的列(即包含“”字符的列)。这是我的输出文件语法使用:
INTO OUTFILE '$csv_file'
FIELDS ESCAPED BY '""' TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n'
我的问题是关于查询的 FIELDS ESCAPED BY 部分 - 如果省略这部分,则空值将正确导出(...,“\N”,...是它在 csv 中的样子) .
但是,包含双引号的列将在 Excel 中拆分为多行/多列。这是因为 excel 要求列中的 '"' 字符通过将它们写为 '""' 来转义。
包含 FIELDS ESCAPED BY 子句修复了包含双引号字符的列的 excel 问题,但是,它会破坏 NULL 列。 NULL 列导出为 ( ..."N,... ),缺少列上的反斜杠和尾随引号。在 Excel 中,由于缺少结束引号,这会导致多个列相互折叠。
我的目标是能够导出包含双引号和换行符的列,以及将空列导出为\N,但我似乎无法弄清楚如何去做。 MySQL 文档指出 FIELDS ESCAPED BY 会影响 NULL 列的输出方式,但我无法弄清楚 '""' 的转义序列如何导致删除 NULL 列上的反斜杠和尾随引号
目前,我的解决方案是在输出给用户的每一行上执行字符串替换,方法是使用 FIELDS ESCAPED BY 并将“N,”替换为“\N”。这似乎可行,但感觉不对,我担心它会导致一些问题
选择列上的 IFNULL( ) 可能是一个选项,但我们在代码中使用它的方式实际上很难实现。还需要为可能具有 NULL 值的每一列完成此操作,因此如果可以的话,我想避免使用此解决方案
谢谢!
最佳答案
我能够成功地将 MySQL 查询结果保存为 CSV 并将它们导入 Excel,如下所示:
使用表格...
IFNULL(ColumnA, "" ) AS "Column A",
...对于 SELECT 语句中的每个列或表达式,都可能返回 NULL (\N)。这将确保 CSV 文件中的 NULL 值显示为正确引用的空字符串,而不是错误引用的\N。您可以指定一个值来表示 NULL,而不是空字符串,例如...
IFNULL(ColumnA, "~NULL~" ) AS "Column A",
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
ESCAPED BY '"'
LINES TERMINATED BY '\r\n'
请注意,ESCAPEED BY 指定一个双引号,ENCLOSED BY 也是如此。我还没有测试 OPTIONALLY ENCLOSED BY 是否会成功,所以我只是将 OPTIONALLY 排除在外。
根据 CSV 规范 - RFC 4180,第 2.7 节,需要在带引号的字段值内使用双引号转义另一个双引号。
关于php - 如何在 mysql SELECT ... OUTFILE 语句中与 FIELDS ESCAPED BY 一起处理 NULL 值?当前正在截断 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4590385/
一个简单的GNU m4问题,但是我找不到正确的答案。我想在代码部分的开始/结束处打印一个markdown header : ``` echo Hello ``` 如何创建包含3个反引号的GNU M4宏
我有一个 shell 变量(我们将调用 x),其中包含一个带有 shell 元字符的字符串。例如,我可能有 abc "def's" ghi 设置为 x='abc "def'\''s" ghi'
我有一个 shell 变量(我们将调用 x),其中包含一个带有 shell 元字符的字符串。例如,我可能有 abc "def's" ghi 设置为 x='abc "def'\''s" ghi'
执行以下行时: df = df[df['Directory'].str.contains("C:\Windows\System32\Tasks")] 我收到以下错误: File "/Users/pat
我正在使用 python-social-auth 从我的 Django 应用程序登录社交网络。在我的本地机器上一切正常,但是当我部署到服务器时出现以下错误: oauthlib.oauth1.rfc58
URI.escape 和 CGI.escape 有什么区别,我应该使用哪一个? 最佳答案 斧头和剑有什么区别,我应该使用哪一种?好吧,这取决于您需要做什么。 URI.escape 应该将字符串 (UR
我今天安装了 Zenwalk Linux。我发现 Escape 键没有绑定(bind)到任何东西(至少据我所知),而是 Escape 通常会做什么(关闭程序,打开 vim 命令行等)Shift-Esc
我遇到过一种情况,闭包可能在函数 f1 内部调用(闭包被传递到其中),或者可能会传递给其他函数 f2 >。 所以现在我想知道应该如何定义这个闭包的转义行为。我的意思是我应该放 @escaping 还是
在 js/jQuery 中有没有办法拥有这两种按键组合? ESCape 键 和 SHIFT + ESCape 键 当我实现它时使用: document.onkeydown = function(e){
我正在尝试将字符串中的任何换行符或转义换行符规范化为转义的 unix 换行符。我不明白为什么这不起作用: Pattern EOL = Pattern.compile("(\\\\r)?\\\\n|\r
swift 4.2,Xcode 10.1 在我正在处理的订单处理应用程序中,用户可以搜索已处理或提交的订单。发生这种情况时,它将检查是否有订单缓存,如果没有,它将使用异步 API 请求重新填充该缓存,
我的几个网页名称中包含以下字符&,例如“Shipping & Deliveries”等 我的架构标记注入(inject)了 GTM (JSON-LD),但在 SDTT 中我收到以下错误: Uncate
自版本 1.9.0 起,Twig为 escape 过滤器提供 html_attr 策略(参见 documentation )。 html 策略使用 htmlspecialchars PHP 函数(通过
我有一个像这样的 View Controller : class PublicationListViewController: UIViewController { var publicati
这是我的代码: class Main { init() { let x = Sub(s: foo) } func foo(completion: @escapi
我正在尝试将闭包用于一阶谓词演算,并且我打算定义以下函数: func ASSUM(p: @escaping Pred) -> (Pred) -> Pred { return { q in AN
我有关于 ezSQL_mysql 和 ezSQLcore 的问题,它可能是 PHP 版本不兼容,我分享下面的代码。我应该使用什么版本的 PHP 或者我应该做什么来定制 mysqli? (我的PHP版本
我有以下函数,其中有完成处理程序,但出现此错误: Closure use of non-escaping parameter may allow it to escape 这是我的代码: func m
我正在使用 Swift-VectorBoolean 库,它目前在 Swift 3.2 上,尚未针对 Swift 4.2 进行更新,但应该仍可在 Xcode 10 上运行。在 Xcode 9 上运行它,
我想用这个 ansible 命令在 nrpe.cfg 中插入一个 nrpe 命令 check_tomcat_threads.pl -H localhost -p 30011 -C '"http-bio
我是一名优秀的程序员,十分优秀!