Import CSV (#3643)

* add upload csv button to sources dropdown

* upload csv to non-hive datasources

* upload csv to hive datasource

* update FAQ page

* add tests

* fix linting errors and merge conflicts

* Update .travis.yml

* Update tox.ini
This commit is contained in:
timifasubaa
2017-11-27 21:07:12 -08:00
committed by Maxime Beauchemin
parent c5ddf57124
commit 268edcfedd
7 changed files with 375 additions and 5 deletions

View File

@@ -10,7 +10,9 @@ import doctest
import io
import json
import logging
import os
import random
import string
import unittest
from flask import escape
@@ -789,6 +791,46 @@ class CoreTests(SupersetTestCase):
{'name': ' NULL', 'sum__num': 0},
)
def test_import_csv(self):
self.login(username='admin')
filename = 'testCSV.csv'
table_name = ''.join(
random.choice(string.ascii_uppercase) for _ in range(5))
test_file = open(filename, 'w+')
test_file.write('a,b\n')
test_file.write('john,1\n')
test_file.write('paul,2\n')
test_file.close()
main_db_uri = db.session.query(
models.Database.sqlalchemy_uri)\
.filter_by(database_name='main').all()
test_file = open(filename, 'rb')
form_data = {
'csv_file': test_file,
'sep': ',',
'name': table_name,
'con': main_db_uri[0][0],
'if_exists': 'append',
'index_label': 'test_label',
'mangle_dupe_cols': False}
url = '/databaseview/list/'
add_datasource_page = self.get_resp(url)
assert 'Upload a CSV' in add_datasource_page
url = '/csvtodatabaseview/form'
form_get = self.get_resp(url)
assert 'CSV to Database configuration' in form_get
try:
# ensure uploaded successfully
form_post = self.get_resp(url, data=form_data)
assert 'CSV file \"testCSV.csv\" uploaded to table' in form_post
finally:
os.remove(filename)
def test_dataframe_timezone(self):
tz = psycopg2.tz.FixedOffsetTimezone(offset=60, name=None)
data = [(datetime.datetime(2017, 11, 18, 21, 53, 0, 219225, tzinfo=tz),),