Проблема Создание нескольких скриптов с Postgres - PullRequest
0 голосов
/ 10 сентября 2018

Я использую postgres для создания нескольких сценариев INSERT для вставки данных из одной базы данных в другую.

Оператор выдает ошибку неправильного синтаксиса для целого числа.

Вот скрипт, который я пытаюсь запустить

select 'INSERT INTO public."HoldingMasters"(
    "AccountID", "AssetID", "CreatedDate", "DateAcquired", "GainsLongTerm", "LotNumber", "Managed", "ModifiedDate", "Sweep", "UID", "Units", "UnitsPledged", "IsModified", "ModifiedCount")
    SELECT ' + CAST("AccountID" as integer) + ',' + CAST("AssetID" as integer) + ',' + "CreatedDate" + ',' + "DateAcquired" + ',' + "GainsLongTerm" + ',' + CAST("LotNumber" as integer) + ',' + "Managed" + ',' + "ModifedDate" + ',' + "Sweep" + ',' + CAST("UID" as integer) + ',' + "Units" + ',' + ',' + "UnitsPledged" + ',' + "IsModifed" + ',' + CAST("ModifiedCount" as integer) +
    'WHERE NOT EXISTS(SELECT "UID" from "HoldingMasters" where "UID" = ' + CAST("UID" as integer) +')'
    as script from "HoldingMasters";

И это дает мне ошибку:

ERROR:  invalid input syntax for integer: "INSERT INTO public."HoldingMasters"(
    "AccountID", "AssetID", "CreatedDate", "DateAcquired", "GainsLongTerm", "LotNumber", "Managed", "ModifiedDate", "Sweep", "UID", "Units", "UnitsPledged", "IsModified", "ModifiedCount")
    SELECT "
LINE 1: select 'INSERT INTO public."HoldingMasters"(
           ^
SQL state: 22P02
Character: 8

Некоторые из этих столбцов являются целыми числами, и я не уверен, какой синтаксис использовать для правильного приведения в выражении INSERT в моих сценариях.

Я пытался:

SUM (NULLIF ("AccountID", '') :: integer)

"AccountID" :: целое число

to_number - похоже, не работает на моей машине

Я выполнил этот оператор INSERT сам по себе без каких-либо проблем, кажется, у него возникают проблемы, когда он работает в генераторе «как скрипт». Я не видел, чтобы кто-нибудь пробовал этот синтаксис в генераторе скриптов.

Буду признателен за любую помощь.

...