【问题标题】:insert multiple rows in transactions, and if one fails let the rest be inserted在事务中插入多行,如果其中一个失败,则插入其余行
【发布时间】:2019-07-03 11:43:17
【问题描述】:

我有一个从不同网站收集酒店名称和地址数据的应用程序。

我需要将它们成串插入 - 一次 10 个 - 插入 mysql 数据库。 如果一个失败(例如当前的酒店名称超过 100 个字符,而 hotel_name 列的类型是 char(75)),那么失败之后的那些将丢失。

那么我如何编写一个事务或查询,其中有 10 个插入语句,但如果一个失败,它会让其余的被插入。

insert into hotels (hotel_id, hotel_name, batch_id)
    values ('18nt2f4jrqsqipf', 'Hotel Urban Flats Vienna City Center', '2019-02-04_20-35-22');
    values ('18nt2fajrqsqk4g', 'Hotel Appartements Castello', '2019-02-04_20-35-22');
    values ('18nt2ghjrqsqx5o', 'Bed and Breakfast Pension Bergkristall', '2019-02-04_20-35-22');
    values ('18nt2gnjrqsqv48', 'hotel garni corona: einfachheit und gastfreundschaft am comer see - scoene aussich im jeden jahreszeit - gaeste sind immer wilkommen', '2019-02-04_20-35-22');
    values ('18nt2gnjrqsqw41', 'Hotel Sommerhotel Don Bosco', '2019-02-04_20-35-22');

所以在第 5 个值子句中,对于 hotel_name 列,数据比数据类型长。 我该如何实现,将其包装到事务中(或仅在正常查询中),如果该事务失败,事务仍会运行下一个事务? 感谢您的回答

(顺便说一下,代码预览显示我的代码没有换行符和缩进,虽然我使用了 4 个空格缩进和换行符,如果这些似乎没有显示,请见谅)

【问题讨论】:

  • INSERT IGNORE
  • 是的,它已经解决了这个问题......如果你回答了这个问题,我可以为你提供解决方案。非常感谢。
  • 谢谢,不过太琐碎了,我真的不需要积分。
  • 我还是谢谢你。祝你好运。

标签: mysql node.js pdo transactions insert-into


【解决方案1】:

从所需站点收集数据后,尝试将它们写入 CSV 文件。 然后使用 MySQL LOAD DATA 语法将 CSV 文件中的值插入到表中。

更多信息请查看link

但请确保您的 csv 文件中的所有项目都应与您的 mysql 表结构兼容。

【讨论】:

    猜你喜欢
    • 2021-10-09
    • 1970-01-01
    • 2013-11-11
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多