【问题标题】:How to use new line, escape quotes and normal quotes together in one CSV column?如何在一个 CSV 列中同时使用新行、转义引号和普通引号?
【发布时间】:2020-01-18 13:12:16
【问题描述】:

我在 Excel 2016 中准备了一些数据,以便在 VBA 的帮助下导出为 CSV:

workbookToExport.SaveAs Filename:=CSVFilename, FileFormat:=xlCSV, local:=True

然后我获取 CSV,并使用 MySQL Workbench 的 Table Data Import Wizard。我来了

错误
未处理的异常:列表索引超出范围
查看日志了解更多详情。

这是样本数据,导致上述错误:

id;name;information;reference;limit;release
26;Lorem ;"Lorem ""ipsum"" Lorem ipsum.
Lorem ipsum.
Lorem „Ipsum“ lorem";Lorem ipsum;2;10000

在这里您可以看到,字符串本身在引号" 中,使用了转义引号"",并且数据跨越了多个new lines。

如果我删除新行,导入确实有效。是否有可能保留新线路?怎么样?

我读到如果你引用你的文本,你可以保留新行。但这不适用于我的情况。

我能做什么?

PS:CSV 的编码是 latin 1 (iso-8859-1) / ANSI。

【问题讨论】:

  • CSV 代表逗号分隔值,其中每一行代表一条记录。如果您需要它来保存 lorem ipsum 并保留换行符,请考虑使用更适合此的另一种数据格式。
  • @MathieuGuindon:感谢您的提示。那将是一个解决方案。 MySQL Workbench 也支持 JSON 导入。现在我必须弄清楚如何将我的工作表转换为 JSON 文件。
  • 它支持 XML 吗?使用 XML 可能会更轻松,但是 YMMV
  • 似乎不支持。除了我会使用另一个工具为我导入 MySQL 数据库...
  • TBH 我很惊讶 Workbench 不支持通过 ODBC 直接从 Excel 文件导入。 SQL Server Management Studio 做到了。或者,您可以使用 ADODB 连接到数据库,迭代您的行,并通过 ADODB.Command 插入记录,并使用您要插入的值进行参数化(虽然可能很慢)。

标签: excel vba csv mysql-workbench


【解决方案1】:

现在我使用相同的 CSV 文件并通过 mysql 命令行进行导入。

  1. 安装 MySQL 服务器
  2. 导航到C:\Program Files\MySQL\MySQL Server 8.0\bin
  3. 使用mysql -u user -ppassword -h hostname -P portnumber --local-infile 登录到您的远程数据库
  4. 检查您的数据库服务器是否使用SHOW VARIABLES LIKE 'local_infile'; 激活了local_infile,并使用SET GLOBAL local_infile = 1; 打开它
  5. 使用以下命令导入 CSV

    LOAD DATA LOCAL INFILE  
    'C:/some.csv'
    INTO TABLE dbname.tablename
    CHARACTER SET latin1
    FIELDS TERMINATED BY ';' 
    ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    IGNORE 1 ROWS
    (id;name;information;reference;limit;release);
    
  6. 用SET GLOBAL local_infile = 0;关闭local_infile

其他选项是:

  • 不关心新行并删除它们
  • 使用新行和 MySQL Workbench 导入器将数据导出为 JSON
  • 创建 XML 并通过命令行导入
  • 编写自己的 SQL 脚本文件
  • 使用 ADODB

【讨论】:

    猜你喜欢
    • 2020-06-06
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多