質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

2回答

3142閲覧

MS-access>pgsql>実行時エラー3157

YosiyukiUsijima

総合スコア42

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

1クリップ

投稿2020/03/18 06:07

編集2020/03/18 06:09

ただいまOracle8iからPostgreSQL9にデータ移行中です。
データ移行の中で仲介としてMicrosoft Access2002を使っています。
使っているOSはWindowsXpです。

データ不一致クエリで、未移動のデータを抽出してクエリで更新しようと
しているのですが、追加データはできるのですが、データ更新は下記のような
エラーが出ます。
------- Error Message -------
実行時エラー '3157'
ODBC--リンクテーブル'更新先テーブル名’での更新に失敗しました。
ERROR "=?"またはその近辺での構文エラー
Error whil perparing parameters (#1)
-------- EOF -----------

選択クエリで抽出したものをさらに更新クエリで実行したために出たエラーだと
思い、、選択クエリで出た結果からテーブル作成を行い、テーブルから
更新クエリを実行しました。
テーブル作成は無事にできましたが、更新クエリーを実行すると上記のエラーとなります。データを1件にしても同じようにエラーが出ました。

エラーメッセージについて調べてみたのですが、情報は見つかりませんでした。
ご存じの方、よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

プリペアードクエリについては、ちょっと理解ができずここまで深く動作確認をしたことが無いので、またの機会にします。
Windows10でVMwareでWindowsxpを起動させてテストしたところ、うまく動きました。しかし、実際に使う機器で動かすといつものエラーが発生します。
処理速度・容量に問題があるのかもしれません。
移植する途中なので、恒久対策でない為、sazi様のおっしゃったcsvでのやり取りのマクロを組むことにします。
忙しい中、アドバイスをいただきありがとうございました。

投稿2020/03/19 04:48

YosiyukiUsijima

総合スコア42

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

属性のエラーではないでしょうか。
更新する項目を減らして、一つずつ追加しながら確認してみて下さい。

結合や抽出の条件がある場合には、先ずは選択クエリーで問題が無いかを確認してみて下さい。

因みにですけど、データ量が結構あるなら、リンクテーブル経由では無く、CSV経由の方が高速です。
oracle →(csv)→postgres
という手順が無理でも
oracle →(リンクテーブル)→Access →(csv)→postgres
の方が高速です。

投稿2020/03/18 06:19

編集2020/03/18 06:24
sazi

総合スコア25300

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YosiyukiUsijima

2020/03/18 06:36

了解しました。項目を削って確認しています。 並行運転をするため、csv一発異動ができなくて、両方のデータをしばらく更新し続けるので、こういった手法が必要になっています。 ありがとうございました。
sazi

2020/03/18 07:08

エラー自体はpostgresのプリペアードクエリによるものみたいですね。 知っているようで知らないプリペアードクエリ https://blog.ohgaki.net/postgresql-prepared-query-explained パラメータの変換が出来ていないという事は属性による書式などの問題によるものでしょう。
sazi

2020/03/18 07:10

文字コードの変換が必要なら、それも多少は気にはなりますが。
YosiyukiUsijima

2020/03/19 01:18

項目を1つ1つ消して試してみましたが、エラーは変わりませんでした。 文字コード変換については「接続時 設定」に「SET CLIENT_ENCODING = 'SJIS';」を追加していますので、大丈夫と思います(WindowsXpですから)。 プリペアードクエリについては、初めて聞く言葉なので昨夜から勉強中です。m(__)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問