INSERT语句(sql)中“http”处或附近的语法错误

时间:2014-08-07 08:29:07

标签: sql postgresql postgresql-9.3

尝试运行时出错:

INSERT INTO dtb_order VALUES (
    14,1920,NULL,
    'テスト',NULL,'03','6302','0215',NULL,NULL,NULL,'160','0023',NULL,0,13,
    '新宿区西新宿','セントラルパークタワー・ラ・トゥール',6,
    '1972-09-02 00:00:00',NULL,3150,0,1,500,0,0,0,0,150,3650,3650,8,
    'NP後払い',NULL,9000,'2013-09-12 18:42:56',
    '2013-09-23 19:42:22',NULL,NULL,10,1,NULL,
    'a:2:{s:5:\"title\";a:2:{s:4:\"name\";s:32:\"NP後払いでのお支払情報\";s:5:\"value\";b:1;}s:3:\"msg\";a:2:{s:4:\"name\";s:15:\"ご注意事項\";s:5:\"value\";s:388:\"株式会社ネットxxxションズより、商品とは別に郵送されます。\n主要コンビニ・銀行・郵便局でお支払いできますので、商品の到着を確認してから、\nお支払いをお願いいたします。\nNP後払いの詳しいご案内はこちら⇒ <a href=\'http://np-someurl.jp/about/\' target=\'_blank\'>http://np-someurl.jp/about/</a>\n\";}}',
    NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL
);

错误讯息:

Error : ERROR:  syntax error at or near "http"
LINE 1: ...ます。\nNP後払いの詳しいご案内はこちら⇒ <a href=\'http://np-...
                                                             ^

试过http:\/\/np-...没有运气。

++++++++

除了$$(带有http的字符串)$$之外还有其他方式,因为我有近20万个INSERT,其中只有一些有http://,我只想修改“http://”替换通过vim或类似的东西,而不是手动。

2 个答案:

答案 0 :(得分:2)

您不显示整个命令。我的猜测是没有正确逃脱。使用美元引用$$而不是单引号,因此不必转义字符串中的单引号。还可以使用转义字符串E语法来生成新行\n

E$$a:2:{s:5:"title";a:2:{s:4:"name";s:32:"NP後払いでのお支払情報";s:5:"value";b:1;}s:3:"msg";a:2:{s:4:"name";s:15:"ご注意事項";s:5:"value";s:388:"株式会社ネットxxxションズより、商品とは別に郵送されます。\n主要コンビニ・銀行・郵便局でお支払いできますので、商品の到着を確認してから、\nお支払いをお願いいたします。\nNP後払いの詳しいご案内はこちら⇒ <a href='http://np-someurl.jp/about/' target='_blank'>http://np-someurl.jp/about/</a>\n";}}$$,

http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-CONSTANTS

答案 1 :(得分:0)

\'更改为"&amp; \""完成了这个伎俩。

VIM

:%s/\\'/"/gc

:%s/\\"/"/gc