web-dev-qa-db-ja.com

クエリの正しい「終了行」

2つのデータテーブルをクエリして、それらをcsvファイルに送信してWebサイトにアップロードしようとしています。しかし、ボールをプレイするためのフォーマットを取得するのに問題があります。見出しを列に分けてから、関連データをデータの本文の列に合わせます。

私は現在、目的を達成するのに最も近い-

FIELDS TERMINATED BY ',' ENCLOSED BY '' LINES TERMINATED BY ''

どちらが戻る-

Data returned from query in mysql workbench

しかし、あなたは私の問題を見ることができます。 「\」が付いているパーツ番号は間違った列に表示され、データは見出しと一致しません。

ここで、テーブルが毎秒更新されていることを覚えておいてください。データのアップロード方法は制御できません。パーツ番号から「\」を削除できません。
「\」を無視する回避策が必要です。

これを説明するのはかなり難しいです...

TLDR:-画像の大部分の行のように、すべてのデータを整列させる必要があります。「フィールド/行で終了する」パラメータは何ですか?

2
Ctrl-alt-dlt

回答の下部にあるmydata.csvファイルを参照してください。

テーブルxyを作成しました

CREATE TABLE `xy` 
(
  `fred` int(11) DEFAULT NULL,
  `mary` int(11) DEFAULT NULL,
  `billy` varchar(50) DEFAULT NULL
);

ドキュメントから here 、私はこれを試しました

LOAD DATA INFILE 'mydata.txt' INTO TABLE tbl_name
  FIELDS TERMINATED BY ',' ENCLOSED BY '"'
  LINES TERMINATED BY '\r\n'

しかし、それは失敗しました(1行だけがインポートされました)。私は\ r\nを\ n(Unix)に変更しました。これはより優れていました(すべての行がインポートされましたが、VARCHARフィールドに\はありません-それらは単に削除されました)。

さらにグーグルで私を導いた here

だから私はこれを試しました(答えから)

LOAD DATA INFILE 'mydata.csv' INTO TABLE xy
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
ESCAPED BY ''
LINES TERMINATED BY '\n';

(注:ESCAPED BY ''-つまり何もない-\はデフォルトのエスケープ文字です)

そしてそれはうまくいきました(下の表xyの4行のサンプル)

|    2 |    3 | asf\dsadfs |
|    2 |    3 | asfdsadfs  |
|    2 |    3 | asfdsadfs  |
|    2 |    3 | asf\dsadfs |

私のサンプルmydata.csvファイル

2,3,asfdsadfs
2,3,asfdsadfs
2,3,asfdsadfs
2,3,asfdsadfs
2,3,asfdsadfs
2,3,asfdsadfs
2,3,asfdsadfs
2,3,asf\dsadfs
2,3,asfdsadfs
2,3,asfdsadfs
2,3,asf\dsadfs
2,3,asfdsadfs
2,3,asfdsadfs
2,3,a\sfdsadfs
2,3,asfdsadfs
2,3,asfdsadfs
5
Vérace