2017-08-16 8 views
1

私はSQLデータベースからコンテンツを引き出す私のウェブサイト上でいくつかのPHPを実行しています。クエリが機能しており、すべてが良好です。私が抱えている問題は、phpmyadminを使用してデータセット(.csv形式)をアップロードすると、特定の行の後にすべての内容が削除されるというエラーが発生することです。これは、SQLが意図したよりも多くの列を認識しているためです。そして残念ながら、これは単なる1つの出来事ではありません。私は問題が何であるかを正確に知ることはできないようですが、それは複数の列に分割する区切り文字を含む列 'description'の値によって引き起こされる可能性が最も高いです。うまくいけば、これらの区切り文字をすべて削除/置換することによって問題を解決することができます。私はむしろSQLの新機能ですが、すべての潜在的区切り文字を考慮しなければならないものを単に示しているソースを見つけることはできません。私を助けることができる誰かがいますか?SQL:すべての区切り文字は何ですか?

ありがとうございます!個人的な経験から

よろしく

+0

phpMyAdminは、['LOAD DATA INFILE'](https://dev.mysql.com/doc/refman/5.7/en/load-data.html)を使用してCSVファイルをデータベースにインポートします。秘密にしておいてください。) – axiac

+0

多くの異なることで区切ることができます。私はパイプを見た|コンマ、タブ、固定スペース、ティルダ〜コロン: – ApolloSoftware

+0

推測の代わりに、**あなたの眼球を使用してテキストエディタでファイル**を調べます。 「正しい区切り文字は何ですか?」という質問に対して正しい答えは1つしかありません。あなたの眼球は仕事のための最良のツールです。 –

答えて

1

は、かつて多くの異なるもので区切ることができます。私はパイプを見た|コンマ、タブ、固定スペース、ティルダ、コロンなどがあります。 https://en.wikipedia.org/wiki/Delimiter-separated_valuesから直接取得

「それらの広範囲の使用には、カンマやタブ区切りのテキストファイルには、時にはユーザーせずに、ほとんどのスプレッドシートプログラムと統計パッケージなどのアプリケーションのいくつかの種類、で開くことができますどのデリミタが使用されているかを指定します。[5] [6]これらのアプリケーションのそれぞれは独自のデータベース設計と独自のファイル形式(accdbやxlsxなど)を持っていますが、DSVファイル内のフィールドをすべて自分自身のデータモデルとフォーマット。

通常、区切られたファイルフォーマットは仕様で示されています。区切り文字の衝突は、他はありません。デリミタの衝突は、データの一部として意図された文字がデリミタとして解釈されるときに発生する問題です。多くの場合、これらの文字はデータフィールドの正当な部分であるため、カンマとスペースで区切られた形式ではこの問題が発生することがよくあります。

このようなファイルのほとんどは、二重引用符で囲まれたすべてのデータフィールドを囲むか、区切り文字を含むデータフィールドを引用するだけで、区切り文字の衝突を回避します。タブ区切りテキストファイルの1つの問題は、タブをスペースと区別するのが難しいことです。したがって、人が手で編集しようとすると、ファイルが壊れてしまうことがあることがあります。別の一連の問題は、通常はデータベースへのファイルのインポート中にファイル構造のエラーが原因で発生します(上記の例では、そのようなエラーは生徒の最初の名前がない場合があります)。

データ自体によっては、区切り記号としてチルダ(〜)などの非標準文字を使用すると便利です。データベース内にコードスニペットを格納するWebサイトやその他のアプリケーションが普及するにつれて、単に「すべてのハイパーリンクと画像ソースタグで発生する」だけでは、この種の衝突を回避するには不十分です。コロン(:)、コロン(;)、パイプ(|)、および他の多くの文字も使用されているため、他の場所で使用されていない文字を見つけるのは非常に困難です。

+0

あなたの答えをありがとう。列の区切り文字として〜を設定して、値のどこにでも取り入れようとします。それが動作するかどうかを確認します。良いものを持っている! –

+0

CSVはユニークなキャラクターを必要としないシンプルなメカニズムを提供しています。値にコンマが含まれている場合は、 '" ... "'二重引用符で囲みます。 '' Joe '*適切な* CSVのMan "Smith、Jr."は "Joe" "The Man" "Smith、Jr."です。 '' FIELDS'を使用しています。 .. '' 'と' LOAD DATA INFILE 'をENCLOSED BYすると正しい* CSVファイルが正しく読み込まれるはずです。 –

関連する問題