解決済ですので削除させて頂きました。ありがとうございました。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
いやさすがに適当すぎて再現は無理でしょう。「ALTER TABLE」自体は動いているので再現するコードをお願いします。
退会済みユーザー
2018/05/16 04:47
お読み頂きありがとうございます。大変失礼致しました。修正させて頂きましたのでよろしくお願い致します。
回答2件
0
別の方法で解決しました。
投稿2018/05/23 14:25
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
とくに問題なく動いているようです。
記述ミスが散見されるので、修正して以下のような状態で確認しています。
JavaScript
1alasql('CREATE TABLE sample(id INT, word STRING, word2 STRING, word3 STRING);'); 2var qsample = alasql.promise('SELECT MATRIX * FROM CSV("file.csv", {headers:true})') 3 .then(function(promises) { 4 for (var i = 0; i < promises.length; i++) { 5 alasql('INSERT INTO sample VALUES (?, ?, ?, ?);', promises[i]); 6 } 7 8 console.log(alasql('SELECT * FROM sample;')); 9 // [{id: 1, word: "W1-1", word2: "W1-2", word3: "W1-3"}, {id: 2, word: "W2-1", word2: "W2-2", word3: "W2-3"}] 10 console.log(alasql('SHOW COLUMNS FROM sample;')); 11 // [{columnid: "id", dbtypeid: "INT", dbsize: undefined}, {columnid: "word", dbtypeid: "STRING", dbsize: undefined}, {columnid: "word2", dbtypeid: "STRING", dbsize: undefined}, {columnid: "word3", dbtypeid: "STRING", dbsize: undefined}] 12 13 alasql('ALTER TABLE sample ADD COLUMN adding STRING'); 14 console.log(alasql('SELECT * FROM sample;')); 15 // [{id: 1, word: "W1-1", word2: "W1-2", word3: "W1-3", adding: undefined}, {id: 2, word: "W2-1", word2: "W2-2", word3: "W2-3", adding: undefined}] 16 console.log(alasql('SHOW COLUMNS FROM sample;')); 17 // [{columnid: "id", dbtypeid: "INT", dbsize: undefined}, {columnid: "word", dbtypeid: "STRING", dbsize: undefined}, {columnid: "word2", dbtypeid: "STRING", dbsize: undefined}, {columnid: "word3", dbtypeid: "STRING", dbsize: undefined}, {columnid: "adding", dbtypeid: undefined, dbsize: undefined}] 18 19 alasql("INSERT INTO sample VALUES (3, 'W3-1', 'W3-2', 'W3-3', 'a');"); 20 console.log(alasql('SELECT * FROM sample;')); 21 // [{id: 1, word: "W1-1", word2: "W1-2", word3: "W1-3", adding: undefined}, {id: 2, word: "W2-1", word2: "W2-2", word3: "W2-3", adding: undefined}, {id: 3, word: "W3-1", word2: "W3-2", word3: "W3-3", adding: "a"}] 22 console.log(alasql('SHOW COLUMNS FROM sample;')); 23 // [{columnid: "id", dbtypeid: "INT", dbsize: undefined}, {columnid: "word", dbtypeid: "STRING", dbsize: undefined}, {columnid: "word2", dbtypeid: "STRING", dbsize: undefined}, {columnid: "word3", dbtypeid: "STRING", dbsize: undefined}, {columnid: "adding", dbtypeid: undefined, dbsize: undefined}] 24 25 alasql('ALTER TABLE sample DROP COLUMN adding'); 26 console.log(alasql('SELECT * FROM sample;')); 27 // [{id: 1, word: "W1-1", word2: "W1-2", word3: "W1-3"}, {id: 2, word: "W2-1", word2: "W2-2", word3: "W2-3"}] 28 console.log(alasql('SHOW COLUMNS FROM sample;')); 29 // [{columnid: "id", dbtypeid: "INT", dbsize: undefined}, {columnid: "word", dbtypeid: "STRING", dbsize: undefined}, {columnid: "word2", dbtypeid: "STRING", dbsize: undefined}, {columnid: "word3", dbtypeid: "STRING", dbsize: undefined}] 30 });
file.csv
CSV
1h1,h2,h3,h4 21,"W1-1","W1-2","W1-3" 32,"W2-1","W2-2","W2-3"
投稿2018/05/16 06:33
編集2018/05/17 01:05総合スコア13749
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/05/16 12:54
ご回答ありがとうございます。2度に分けて編集したのですが、2回目の編集が反映されていなかったようで、修正の手間をおかけして申し訳ありませんでした。
同じ文章で試してみたのですが、相変わらずadding is not found in tableになってしまいます。
SELECT * と SHOW COLUMNSの結果の差については、ADDとDROPの間に挟んで行っていた
INSERTだけが機能していた結果だったようなのですが、そもそもaddingというカラムが追加されていなくても値をSETできるものなのでしょうか?
alasql('ALTER TABLE sample ADD COLUMN adding');
alasql('INSERT INTO TABLE SET adding = a');
このタイミングでSHOW COLUMNSをするともとのCSVデータのみが表示され、
SELECT*をすると元のデータにadding:"a"も入ったものが表示されます。
ADD COLUMNをコメントアウトしても同じ結果でした。
alasql('ALTER TABLE sample DROP COLUMN adding');
この操作をするとcolumn adding is not found in table sampleとエラーになります。
2018/05/17 01:09
INSERTとUPDATEが混ざったような感じになっていますが、SQLの知識は大丈夫でしょうか?
INSERTとみなし、本文に追加しました。
とにかく、誤記が多いため、一度見直してみるべきかと思います。
なお、ALTER TABLEでカラム追加時に型が指定できないというバグがあるようです(未定義のままでも動きますが)。
https://github.com/agershun/alasql/issues/172
退会済みユーザー
2018/05/17 11:43
書き込んだ時に混同してしまっていました。すみません。この度はありがとうございました!
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。