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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

1回答

1937閲覧

CSVに不要な改行が入っているが、正規表現で検出されない。

tonkotsu_ramen

総合スコア6

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2022/01/01 06:51

編集2022/01/01 12:30

やろうとしてること

SQLserverのデータをCSVで吐き出し、それをプログラムを通じて、バッチでMySQLに登録するシステムを作っています。

起きている問題

吐き出されたCSVを確認すると、レコードの途中で改行されてしまっている。
そのCSVをプログラムで読み込むと、エラーとなってしまう。

おかしな位置で改行される2パターンあり、とあるカラムの値が

①「<<<<<<<<<<<<<」「改行」
②「V1234567」(V+7桁の数値)「改行」

となっている。

どうも、SQLserverの1データの中で改行されているようで、CSV出力されたときにそのまま改行も出力されたようです。
ただ、自宅からはそのSQLserverに接続することができなく、会社に行かないとSQLserverに接続できません。なので、再CSV出力とかDB内の値をみたりとかはできない状況で、なんとか手持ちのCSVでどうにかしたいと考えています。

#やってみたこと
VScodeでそのCSVを開き、正規表現で改行を検索しているのですが、通常のレコードの終わりの改行は問題なく検出されているのですが、問題の位置の改行は正規表現の検索でヒットしません。
そこが検索にヒットするのであれば、 
「.*<<\n$」とかで後方一致で改行を消してしまえるのですが、それができません。

#わからないこと
なぜ改行されているにもかかわらず、正規表現で検出されないのか。

実現したいこと

不要な改行を消してCSVファイルを正常な状態にしたい。

宜しくお願いいたします。

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

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

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

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

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

KOZ6.0

2022/01/01 08:18

データの内容が何なのかわかりませんが、改行が含まれているなら、そのまま登録しなくてはいけないのでは?
guest

回答1

0

まずはバイナリエディタ等でCSVファイルの問題箇所の改行コードを確認してみては如何でしょうか?

<参考>
■ Stirling - 使いやすさと高機能を両立した最強の新・定番バイナリエディタ
https://www.vector.co.jp/soft/win95/util/se079072.html

投稿2022/01/01 07:36

cx20

総合スコア4648

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

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

tonkotsu_ramen

2022/01/01 08:53

バイナリエディタ(Hex Friend)で確認したところ、問題の改行の一位置には「 」が入っていました。 これを一括で置換で消したいのですが、正規表現等を使って条件指定して一括置換をしたいのですが、そういったツールありますでしょうか。
cx20

2022/01/01 09:14

> バイナリエディタ(Hex Friend) もしかして Windows ではなく MacOS でしょうか?(SQL Server ということで Windows だと思い込んでいました。。) > 問題の改行の一位置には「 」が入っていました すみません、それは改行コードでなく空白文字ということでしょうか?(文字が判別できません。) できれば文字コードで提示お願いします。 もしかして文字化けしているという可能性はありませんか? 元のデータに何が入っていたのか確認してみた方が良い気がします。
tonkotsu_ramen

2022/01/01 12:35

すみません、色々情報不足していました。 まず、MacOSでした。 あと、SQLserverは会社にあるwindowsマシンに入っており、現在連休中なので手持ちのCSVでなんとかするしかない状況です。 わかったこととしては、おそらくそもそものDBの値に改行が入っていると思われます。 文字化けはしておらず、バイナリでみると「20」と表示されていました。
cx20

2022/01/01 14:07

> バイナリでみると「20」 「20」はスペースですね。 > そのCSVをプログラムで読み込むと、エラーとなってしまう。 そもそも、何というエラーが出ていたのでしょうか? 改行とは関係ないエラーが出ていた、ということでしょうか? また、KOZ6.0 さんの指摘にあるように、元の項目に改行が入っていた場合、 それをスペースまたは除去して問題無いかというのは気になるところです。
tonkotsu_ramen

2022/01/02 02:37

カラムの長さが違います的なメッセージだったと思います。 改行は除去しても問題ないです。
cx20

2022/01/02 15:07

> カラムの長さが違います的なメッセージ だとすると、改行自体は発生しているエラーとは関係なさそうですね。 現状はスペースに置き換えられており、これ自体が桁数超過の原因とはならない為です。 エラー箇所について再度確認した方が良いかと思います。 例えば、問題となっていると思われるレコードをCSVファイルから削除して事象が再現するか、等。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問