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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PostgreSQL

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

3789閲覧

テキスト型データの改行コードがうまく表示できない

hatsuzo

総合スコア56

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PostgreSQL

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

2クリップ

投稿2019/08/06 10:00

いつもお世話になっております。

随分と前に作ったWebシステムで作成したMysqlのデータをCSVへエクスポート、PostgreSQLにインポートし、Javascriptを使ったフレームワークで表示しているのですが、改行を含むテキスト項目がうまく表示できないので困っています。

Mysqlのシステム上では、テーブルの列の値のまま表示すると、

職人さん送出し

内勤業務

なのですが、PostgreSQL上で、テーブルの列のまま表示すると、

引用テキスト職人さん送出し\ \ 内勤業務

といった具合にでてきます。

Mysqlのテーブルは、Sjisで作っており、それに合わせてぺージもSjisで作ってしまったものです。
texareaタグで改行コードを入れてvarchar型のフィールドに書き込んでいますが、MySQL~PHP上では、入力した通りに表示できています。

対して、PostgreSQLは、utf-8で作ってあり、ページもutf-8で作っています。

PostgreSQLのpsqlでSQLを使って見てみると、

職人さん送出し\r
\r
内勤業務

といった具合に出ます。
エスケープ文字が二重に入っているように見えるのですが、Javascriptで

memo = memo.replace(/\r\n/g, '<br/>');

と変換すると、

職人さん送出し

内勤業務

でエスケープ文字が残った形?になり、

memo = memo.replace(/\r\n/g, '<br/>');

とすると、変換できません。

PostgreSQLで、事前に変換を掛けようとして、

select regexp_replace(memo, '\r', '\r') from nippo; やら
select regexp_replace(memo, '\r\n', '\n') from nippo;

など試してみましたが、何れも変換が効いていません。

単に正規表現の書き方の問題なのか、変な状態でデータが書き込まれてしまったのかよく判りません。
どのように対処すべきなのか、アドバイス頂ければ幸いです。

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

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

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

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

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

m.ts10806

2019/08/07 00:24

元のMySQLのデータと そこからCSVに変換するプログラムと そこからPostgreSQLにインポートするプログラムと そこから取り出すプログラムもご提示ください。 一度CSVに出力するのってなんか無駄に思うのですが、 何に使うのでしょうか
guest

回答1

0

psqlで

職人さん送出し\r
\r
内勤業務

と表示されていて、¥¥rを除去するなら、replace(memo,'¥¥r','')とすれば良いかと思います。

以下は確認用です。

SQL

1select replace(memo,'¥¥r','') 2from (values( 3'職人さん送出し¥¥r 4¥¥r 5内勤業務' 6 )) as w(memo)

※実際の値が¥ではなくバックスラッシュなら置き換えて下さい。

追記

Mysqlのテーブルは、Sjisで作っており、

対して、PostgreSQLは、utf-8で作ってあり

MySQLからのエクスポート時にESCAPED BY ''を指定しているなら、それが根本の原因だと思います。

投稿2019/08/07 01:15

編集2019/08/07 02:11
sazi

総合スコア25195

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問